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

老大,有一個(gè)webman隊(duì)列進(jìn)程不釋放內(nèi)存的問題請教

tanhongbin

redis 隊(duì)列進(jìn)程消費(fèi),插件安裝的,代碼里面使用了靜態(tài)方法, 隊(duì)列跑完了數(shù)據(jù)進(jìn)程內(nèi)存沒有釋放,
跑之前:
截圖
跑中:
截圖
跑完后:
截圖

然后我打印status 結(jié)果和跑完后一樣,內(nèi)存沒有釋放呀,需要使用單例模式 使用類的靜態(tài)方法嗎?
這樣一直增長會不會出現(xiàn)內(nèi)存泄露 溢出的情況呀?

2401 4 1
4個(gè)回答

walkor 打賞

消費(fèi)的過程中會加載類文件到內(nèi)存,消費(fèi)后內(nèi)存比初始內(nèi)存大是正常的,隨著所有類文件都加載到內(nèi)存,內(nèi)存就不增長了。只要不是內(nèi)存無限增長就沒事。

本地測試下,比如消費(fèi)10萬條消息,后記截圖記錄下內(nèi)存占用,再消費(fèi)10萬條消息看下內(nèi)存是否有明顯增長。如果有的話可能是內(nèi)存泄漏,需要自己定位下,找出代碼中有嫌疑的地方注釋掉,消費(fèi)測試直到找到泄漏點(diǎn)。沒有明顯增長不用擔(dān)心。一般進(jìn)程占用幾十M是很正常的事情。

  • tanhongbin 2022-04-27

    感謝老大,我在測試一下是不是這個(gè)問題

tanhongbin

截圖
截圖
截圖
截圖

  • walkor 2022-04-27

    getInstance方法每次都返回一個(gè)新的實(shí)例試下

  • tanhongbin 2022-04-27

    感覺我生成新的類實(shí)例,效果一樣呀

tanhongbin

截圖

截圖

是不是上面的方法中又請求了另一個(gè)靜態(tài)方法導(dǎo)致的?

  • 暫無評論
Chuckle

插個(gè)樓 為什么4個(gè)進(jìn)程 內(nèi)存差別這么大呢

  • tanhongbin 2022-04-28

    經(jīng)過測試發(fā)現(xiàn)。內(nèi)存是增長到一定量以后,消費(fèi)進(jìn)程重啟,然后內(nèi)存釋放,再增長到一定量進(jìn)程重啟,內(nèi)存釋放,就這么個(gè)循環(huán)過程。

  • tanhongbin 2022-04-28

    process terminated with ERROR: E_ERROR "Uncaught RuntimeException: Workerman Redis Wait Timeout (600 seconds) in /private/var/www/api_process/vendor/workerman/redis-queue/src/Client.php:175

  • Chuckle 2022-04-28

    這個(gè)我知道 有個(gè)內(nèi)存檢測 如果某個(gè)進(jìn)程占用內(nèi)存即將超過php.ini中memory_limit設(shè)定的值,就會重啟進(jìn)程。但是最主要是要知道哪里在泄漏。

  • Chuckle 2022-04-28

    進(jìn)程內(nèi)存30多正常嘛,以及為什么請求最多的 占用內(nèi)存卻最小

  • Chuckle 2022-04-28

    process 意思是隊(duì)列里有命令超過xx秒還沒成功發(fā)送給redis服務(wù)端,觸發(fā)超時(shí)。出現(xiàn)這個(gè)問題一般是業(yè)務(wù)有長時(shí)間阻塞的代碼如sleep、curl等,或者redis讀寫量太大超過redis服務(wù)端承受能力。

  • walkor 2022-04-28

    30多正常。php內(nèi)存管理器不一定會把空閑內(nèi)存及時(shí)歸還給操作系統(tǒng),它會留著復(fù)用,提升性能,比如A進(jìn)程剛好處理了某個(gè)業(yè)務(wù)邏輯申請了大量內(nèi)存,這部分內(nèi)存使用完php管理器可能不會釋放,留著下次用,B進(jìn)程沒處理過這樣占用大量內(nèi)存的業(yè)務(wù),那B進(jìn)程內(nèi)存占用就小一些。這也是為什么有的進(jìn)程大,有的進(jìn)程小,和請求量沒有直接關(guān)系。30M正常,只有內(nèi)存無限增長時(shí)才需要關(guān)注,占用幾十M就不增長了不用管?;蛘吣闶謩诱{(diào)用下 gc_mem_caches() 方法,它會釋放部分空閑內(nèi)存。

  • walkor 2022-04-28

    Workerman Redis Wait Timeout 如JhQ所說,本地緩存里的消息數(shù)據(jù)過了600秒還沒有發(fā)給redis,導(dǎo)致觸發(fā)超時(shí)。
    這種情況一般發(fā)生在短時(shí)間內(nèi)產(chǎn)生巨量消息,redis處理速度跟不上導(dǎo)致的,比如redis走的外網(wǎng),傳輸速度慢。

  • tanhongbin 2022-04-28

    老大,我這次我是真明白了,這次大家也學(xué)習(xí)不少,共同進(jìn)步,奧利給

  • tanhongbin 2022-04-28

    老大,每個(gè)消費(fèi)進(jìn)程使用40多M 的時(shí)候就消費(fèi)進(jìn)程自己重啟了正常嘛?如果超過50M左右就重啟這個(gè)進(jìn)程了

  • walkor 2022-04-28

    status 里的內(nèi)存統(tǒng)計(jì)用的 memory_get_usage(),有些內(nèi)存不會統(tǒng)計(jì)在內(nèi),比如emalloc() 分配的內(nèi)存,php可執(zhí)行文件本身占用內(nèi)存。你看到40M占用實(shí)際上占用要比40M多,具體多少用ps aux查看。
    monitor監(jiān)控的是整個(gè)php的占用的內(nèi)存,達(dá)到最大限度的80%時(shí)回收進(jìn)程。

  • tanhongbin 2022-04-28

    關(guān)鍵是我看了代碼,真的沒有用靜態(tài)屬性 數(shù)組 方式一直往里面放數(shù)據(jù) , 使用靜態(tài)方法,調(diào)用第三方接口就這些,內(nèi)存嗚嗚漲

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