国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

thinkphp5 think-worker 使用定時(shí)器,4個(gè)進(jìn)程同時(shí)執(zhí)行一個(gè)晚上,內(nèi)存暴漲!

邊玩邊玩

運(yùn)行10個(gè)小時(shí),內(nèi)存占用390M,并且4個(gè)報(bào)錯(cuò)也是內(nèi)存溢出,如何能優(yōu)化呢??

[attach]1686[/attach]

[attach]1685[/attach]

[attach]1684[/attach]
?
?

7125 9 0
9個(gè)回答

six

定時(shí)器里的業(yè)務(wù)代碼有內(nèi)存泄漏,這個(gè)東西我覺(jué)得得自己找,把懷疑有內(nèi)存泄漏的業(yè)務(wù)先注釋掉跑著試下,慢慢就定位到了

  • 邊玩邊玩 2019-01-24

    意思是這個(gè)內(nèi)存增長(zhǎng)的原因還是因?yàn)?跑業(yè)務(wù)的內(nèi)存泄漏導(dǎo)致的么...我看看

  • six 2019-01-24

    對(duì)啊

  • 邊玩邊玩 2019-01-24

    @1393:我先排查下業(yè)務(wù),然后做個(gè)測(cè)試

邊玩邊玩

??

  • 暫無(wú)評(píng)論
邊玩邊玩

我排查了下,業(yè)務(wù)邏輯沒(méi)問(wèn)題,就內(nèi)容采集和入庫(kù),沒(méi)其他多余的邏輯啊
?
這里查了下內(nèi)存最多的10個(gè)進(jìn)程

[attach]1688[/attach]
?

  • six 2019-01-24

    把業(yè)務(wù)去掉就知道是不是業(yè)務(wù)問(wèn)題啦

  • 邊玩邊玩 2019-01-24

    @1393:好,我也業(yè)務(wù)邏輯注釋掉,定時(shí)器執(zhí)行時(shí)間改5秒,4個(gè)進(jìn)程同事進(jìn)行,看內(nèi)存是否會(huì)保障

  • 邊玩邊玩 2019-01-24

    @1393:純定時(shí)器5秒,4個(gè)進(jìn)程同時(shí)執(zhí)行,沒(méi)有業(yè)務(wù)邏輯,內(nèi)存照樣會(huì)增長(zhǎng),只是不會(huì)增長(zhǎng)那么快

  • six 2019-01-24

    空定時(shí)器,我這測(cè)試不會(huì)有增長(zhǎng)啊,你是怎么看出來(lái)內(nèi)存漲了的

six
<?php
require_once __DIR__ . '/../Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
$w = new \Workerman\Worker();
$w->onWorkerStart=function(){
? ? $timer_id=Timer::add(0.001,function(){
? ? ? ?
? ? });
};
\Workerman\Worker::runAll();

每秒1000次運(yùn)行,跑了幾分鐘,定時(shí)器運(yùn)行了幾十萬(wàn)次,進(jìn)程內(nèi)存占用情況一直是3116K,沒(méi)有絲毫變化USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
wanghai 46204 6.2 0.0 4365440 3116 s004 S+ 12:11下午 0:10.35 php timer.php start

  • 暫無(wú)評(píng)論
邊玩邊玩

[attach]1689[/attach]
運(yùn)行2小時(shí)? 32M

  • 暫無(wú)評(píng)論
a7662199

我這邊也遇到這樣的問(wèn)題, 寫(xiě)一個(gè)socket服務(wù)端對(duì)接一個(gè)考勤機(jī)硬件,因?yàn)榧恿艘粋€(gè)定時(shí)器,導(dǎo)致內(nèi)存漲的很快,我目前的做法是每小時(shí)定時(shí)的reload, 還沒(méi)有想到比較好的辦法來(lái)解決這個(gè)問(wèn)題,?
?

  • 邊玩邊玩 2019-01-24

    目前定時(shí)reload 是最好的辦法了。

six

奇怪,為啥我的沒(méi)問(wèn)題。
你們自己運(yùn)行下下面的代碼,看下進(jìn)程占用內(nèi)存有漲沒(méi)。

<?php
require_once __DIR__ . '/../Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
$w = new \Workerman\Worker();
$w->onWorkerStart=function(){
? ? $timer_id=Timer::add(0.001,function(){
? ? ? ?
? ? });
};
\Workerman\Worker::runAll();
  • 法師 2019-01-24

    獲取數(shù)據(jù)肯定是要占用內(nèi)存的。只要內(nèi)存不是無(wú)限漲到幾十M就沒(méi)問(wèn)題。

  • 法師 2019-01-24

    一般是往全局?jǐn)?shù)組里存數(shù)據(jù),然后又不刪除,慢慢數(shù)組變得越來(lái)越大,然后GG了

  • a7662199 2019-01-24

    @3236:我這邊目前內(nèi)存是無(wú)限漲的,一般到3個(gè)小時(shí)的時(shí)候會(huì)把線上8G的服務(wù)器爆掉

  • 法師 2019-01-24

    那可能真的是業(yè)務(wù)代碼有內(nèi)存泄漏了

  • a7662199 2019-01-24

    @5367:我的業(yè)務(wù)代碼就存了一個(gè)客戶端連接的全局?jǐn)?shù)據(jù)還會(huì)定時(shí)清除掉

  • a7662199 2019-01-24

    @3236:我的業(yè)務(wù)代碼里面都是一些sql操作,每次讀取的數(shù)據(jù)也不多,下面上傳了我的業(yè)務(wù)代碼截圖

  • 法師 2019-01-24

    那可能有2個(gè)地方導(dǎo)致的,一個(gè)是你說(shuō)的那個(gè)存客戶端連接的全局?jǐn)?shù)據(jù),一個(gè)是定時(shí)器部分。
    那個(gè)存客戶端連接的全局?jǐn)?shù)據(jù)定時(shí)打印下里面的連接數(shù)看下是不是無(wú)限增長(zhǎng),如果是可能就是這里導(dǎo)致的。定時(shí)器部分有可能是數(shù)據(jù)庫(kù)類(lèi)有問(wèn)題,每次新建一個(gè)mysql連接去獲取,用完連接也沒(méi)關(guān)閉,導(dǎo)致開(kāi)了很多mysql連接占用了很多內(nèi)存。

  • a7662199 2019-01-24

    @3236:好的 感謝指導(dǎo) 我去測(cè)試看看

a7662199

[attach]1690[/attach]
?

  • 暫無(wú)評(píng)論
longhaishan
static $timer_count;
if(++$timer_count > 100) {
    Worker::stopAll();
}

把這個(gè)代碼放到定時(shí)任務(wù)的尾部,即可解決的你的問(wèn)題。

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??