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

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

rayrola

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


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


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

?

4013 1 0
1個回答

rayrola

花了3天時間,終于搞定了,是漢字轉(zhuǎn)碼的問題
因為用了一個Unicode轉(zhuǎn)漢字的一個方法,這里面用的create_function。這就導(dǎo)致每次調(diào)用就占了8個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ā)表回答
??