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

GatewayWorker Summary 顯示的內(nèi)存沒有變小

liamhao

在進(jìn)行壓力測試時(shí),只是測試在線保持?jǐn)?shù)量,客戶端和服務(wù)端并沒有發(fā)送任何數(shù)據(jù):

這里是我簡單寫的壓測程序:https://github.com/liamhao/websocket-pressure-test,只要測試機(jī)內(nèi)存允許,支持百萬連接壓測。

第一步:

先通過php start.php start啟動GatewayWorker,這時(shí)輸入php start.php status查看進(jìn)程狀態(tài),結(jié)果如下圖所示,Summary字段顯示內(nèi)存占用18M
截圖

第二步

開始壓測,當(dāng)連接數(shù)達(dá)到37萬左右時(shí),Summary字段顯示內(nèi)存占用2052M
截圖

第三步

停止壓測,將連接數(shù)將為0時(shí),Summary字段仍然顯示內(nèi)存占用2052M,并沒有降低。即使等了很長時(shí)間,也是如此:
截圖

問題

為什么連接斷開了,仍然會有這么大的內(nèi)存占用?里面的數(shù)據(jù)到底是什么?在以上的基礎(chǔ)上,不重啟GatewayWorker的情況下,進(jìn)行第二次壓測,內(nèi)存并不會在2052M的基礎(chǔ)上繼續(xù)增加。想知道具體原因和實(shí)現(xiàn)的原理,謝謝。

1645 2 1
2個(gè)回答

walkor 打賞

對,php內(nèi)存管理器申請的內(nèi)存不一定會歸還操作系統(tǒng),留著復(fù)用以提升性能。所以下次以同樣的客戶端數(shù)量壓測時(shí)內(nèi)存不會增長或者說不會明顯增長,因?yàn)槟遣糠诸A(yù)留內(nèi)存被復(fù)用了。

如果你想釋放這部分內(nèi)存,在start_gateway.php里加一個(gè)定時(shí)器,定時(shí)調(diào)用gc_mem_caches()試下。

$gateway->onWorkerStart = function(){
    Workerman\Timer::add(10, function(){
        gc_collect_cycles();
        gc_mem_caches();
    });
};
  • liamhao 2022-04-29

    那這些留著復(fù)用的內(nèi)存里有存儲什么數(shù)據(jù)嗎?還是說只是占著這些內(nèi)存,但內(nèi)容都是空的?

  • liamhao 2022-04-29

    以及第一次連接時(shí),這些內(nèi)存是用來存儲哪些數(shù)據(jù)用的?

  • walkor 2022-04-29

    留著復(fù)用的內(nèi)存沒有存數(shù)據(jù)。

  • liamhao 2022-04-29

    留著復(fù)用我明白了,那第一次啟動,連接后,第一次漲到2G時(shí),那時(shí)的內(nèi)存里存的是什么?

  • walkor 2022-04-29

    連接對象

  • liamhao 2022-04-29

    ok,感謝。剛剛把 linux 中 /etc/security/limits.conf 文件的 nofile 改的太大了,導(dǎo)致 ssh 登錄不上了... ??

  • liziyu 2022-04-29

    搭順車請教下:比如說服務(wù)器物理內(nèi)存總共有4G,如果這2G占用了,意味著服務(wù)器內(nèi)的其它的應(yīng)用最多也只能用剩余的2G內(nèi)存空間了,這樣理解對嗎?

  • liamhao 2022-04-29

    @liziyu 我覺得是這樣的,那2G是php占用的,不可能給系統(tǒng)別的進(jìn)程用

年代過于久遠(yuǎn),無法發(fā)表回答
??