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

webman內存泄漏排查,需要的大哥給點思路

JunH

為什么php start.php status 顯示進程與實際不符合

我現在打開的php start.php status 顯示內存占用與我服務器上面看到的不一樣
如圖:截圖

服務器進程內存:397768 確是顯示 物理內存使用有368M

上次咨詢過的內存泄漏排查方法記錄的日志

內存中間件
截圖
截圖
是不是代表/admin/room/getRoomList有內存泄漏呢

919 3 2
3個回答

nitron

不是,說明他要用2MB內存,你下一條日志不就-2MB了么

  • JunH 2024-10-17

    感覺不是這個是差值,而且是請求之后的釋放后差值。有點沒搞透徹,現在5臺業(yè)務服務器一直內存在奔潰邊緣

  • nitron 2024-10-17

    你下一條日志不就-2MB了么

  • nitron 2024-10-17

    你這個diff是執(zhí)行結束之前的值,在你return $response之前都不會釋放,所以getRoomList +2MB,下一個日志的memory起始值就是上一個日志沒有釋放時候的結束值,所以再算diff的時候就是-2MB

  • nitron 2024-10-17

    看內存使用很正常,所以先弄清楚是內存的正常增長還是內存泄漏

  • JunH 2024-10-17

    下一條日志的-2M 并不是代表當前接口的內存占用 僅僅是差值 因為部分也在釋放。

  • JunH 2024-10-17

    現在如果實在不行只能去監(jiān)聽服務器內存達到多少執(zhí)行reload了,為什么主進程監(jiān)聽php.ini達到會自動reload,這個也沒有生效呢 ,我看框架上面是這么寫的 現在我單個進程已經達到168M,php.ini設置的128M 沒有自動釋放

  • JunH 2024-10-17

    if (!$worker || $worker->id !== 0) {
    return $response;
    } 大哥 你知道這個是啥意思不? 我沒有很看明白,我進程開啟32個 但是這個判斷是大佬給的 不知道是不是主進程不進行記錄

  • nitron 2024-10-17
    00:00:07 memroy_get_usage = 119537664
    .....
    00:10:09 memroy_get_usage = 119537664
  • nitron 2024-10-17

    如果你看不明白我上面說的意思,那我覺得我也沒必要再說下去了,是個死循環(huán),解決不了問題

  • JunH 2024-10-17

    現在明白了 感謝

walkor 打賞

從日志看沒有內存泄露。每次 /admin/room/getRoomList 請求后內存固定是 119537664,沒有增長。
只要內存不是無限增長就不是內存泄露。有時候業(yè)務從數據庫讀取很大的數據時例如幾十M會申請很大內存,這個內存申請后PHP不一定立刻歸還操作系統(tǒng),可能會留做復用,這時候內存占用就很大。但只要不是無限增長就沒事。

memory_get_usage($real_usage) 返回的是php腳本申請的內存,參數傳false和true值也不同。 top等命令看到的內存是PHP所有東西占用的內存,包括PHP可執(zhí)行文件自身占用、共享庫、緩存等所有占用,肯定要大一些。如果大很多可能是可執(zhí)行文件很大,例如做了二進制打包、phar打包等,也有可能是php或者某個擴展的bug。

關于 “現在我單個進程已經達到168M,php.ini設置的128M 沒有自動釋放” 問題,
執(zhí)行 php -i | grep memory_limit 看下實際值,因為可能沒找對php.ini文件,也有可能config/process.php里手動設置了釋放閾值

if (!$worker || $worker->id !== 0) {
return $response;
}

意思是只記錄0號進程的內存使用情況,所有進程都記錄不好比對。

  • JunH 2024-10-17

    感謝大佬解釋的這么詳細,現在明白了所有的關系。等我自己在好好排查下

  • JunH 2024-10-17

    現在我的系統(tǒng)每天的訪問量快到200W了,5臺4核8G的服務器 內存都在80-90,訪問量還在不停增長有點擔心

qqxxr

你沒沒有排除,業(yè)務的死循環(huán)導致的泄露?。烤褪悄硞€接口請求完了,業(yè)務有死循環(huán)導致的,而且這種現象會導致當前進程阻塞,一直到該進程觸發(fā)了php的內存上限后,被workerman殺死進程后,重啟進程

  • qqxxr 2024-10-17

    你這種內存不一致的進程出現了,你觀察下是不是就那幾個大內存的進程,內存在上漲

  • qqxxr 2024-10-17

    其他的的進程都是好的,唯獨那幾個上漲,就很像我說的這種情況

  • qqxxr 2024-10-17

    還有如果你只是判斷是請求導致的內存泄露,直接用壓測工具隨便跑接口就可以看出來了

  • JunH 2024-10-17

    好的 感謝,我也準備白天沒有業(yè)務量的時候壓測單個這個接口看看內存會有多大變化

  • tanhongbin 2024-10-18

    這個最直觀的辦法就是壓測 然后觀察進程 內存使用情況 如果壓測一直增長 就是內存泄漏 有時候 一直new 類 不釋放 也會緩慢增長 我測試過

??