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

businessWorker內(nèi)存持續(xù)增長

rayrola

用的GatewayWorker(3.0.12),Linux?Centos服務(wù)器,PHP?5.6.38.
啟動(dòng)服務(wù)器成功后,有300個(gè)客戶端正常保持長連接,此時(shí)占用總內(nèi)存大約40MB。隨著時(shí)間的增長,占用總內(nèi)存逐漸增大,通過status查看時(shí)businessWorker占用,運(yùn)行12小時(shí)大約能跑到300M去,為什么會(huì)一直增長呢?
在此期間,程序都是正常運(yùn)行的。


關(guān)于程序的寫法,都是采用new?class,然后調(diào)用class里面的方法。每個(gè)class里面無static變量。只有const和public。
整個(gè)程序用了md5庫函數(shù)、openssl加密、解密庫函數(shù)、json庫函數(shù)。


為什么我這里的內(nèi)存會(huì)逐漸增加呢?現(xiàn)在處理辦法是每天重啟一次。不過好雞肋。求賜教
在運(yùn)行的過程中,無節(jié)點(diǎn)斷開連接,也無新設(shè)備新建連接。一直是開始的300個(gè)左右的客戶端存在。
?
這是在Events里面的協(xié)議解析流程圖

?

4115 1 0
1個(gè)回答

rayrola

花了3天時(shí)間,終于搞定了,是漢字轉(zhuǎn)碼的問題
因?yàn)橛昧艘粋€(gè)Unicode轉(zhuǎn)漢字的一個(gè)方法,這里面用的create_function。這就導(dǎo)致每次調(diào)用就占了8個(gè)byte內(nèi)存。

$signString = preg_replace_callback('/\\\\u({4})/i',
        create_function(
            '$matches',
            'return mb_convert_encoding(pack("H*", $matches), "UTF-8", "UCS-2BE");'
        ),
    $signString); 現(xiàn)在把該方法修改為以下就好了
$signString = preg_replace_callback('/\\\\u({4})/i',
    function($matches){
        return mb_convert_encoding(pack("H*", $matches), "UTF-8", "UCS-2BE");
    },
    $signString);
  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??