首頁 > 後端開發 > php教程 > swoole多進程使用過程中,主進程記憶體不斷變大何解?

swoole多進程使用過程中,主進程記憶體不斷變大何解?

WBOY
發布: 2023-03-02 06:14:01
原創
1913 人瀏覽過

目前業務需要實現一個時時分析資料流的功能,需要精確到秒級別,原本打算用swoole task實現一個任務服務,但是目前還沒有對應的機器跑服務端,所以暫時決定用swoole 的多進程模型結合swoole 的timer實現,過程中遇到一個父進程,記憶體佔用不斷飆升的問題,求解?
其中程式碼邏輯是,在父進程中創建6個swoole_process,透過swoole_timer隔一秒鐘分發任務給空閒的子進程,並標記該進程為忙碌狀態,子進程處理完任務後與父進程通過管道通信,通知父進程目前進程處於空閒狀態,透過父子之間的通信,起到類似"父進程維護一個子進程池"的效果,其中某個進程空閒超過一段時間或者超過一定處理任務數,父進程即可通知該程序銷毀並拉起新的子程序。程式碼邏輯大概這樣,但是遇到的問題是父行程的記憶體佔用逐漸變大,請問swoole大神們該如何解決?是不是因為父行程維護這個類似子行程池導致的呢?請賜教

回覆內容:

目前業務需要實現一個時時分析資料流的功能,需要精確到秒級別,原本打算用swoole task實現一個任務服務,但是目前還沒有對應的機器跑服務端,所以暫時決定用swoole 的多進程模型結合swoole 的timer實現,過程中遇到一個父進程,記憶體佔用不斷飆升的問題,求解?
其中程式碼邏輯是,在父進程中創建6個swoole_process,透過swoole_timer隔一秒鐘分發任務給空閒的子進程,並標記該進程為忙碌狀態,子進程處理完任務後與父進程通過管道通信,通知父進程目前進程處於空閒狀態,透過父子之間的通信,起到類似"父進程維護一個子進程池"的效果,其中某個進程空閒超過一段時間或者超過一定處理任務數,父進程即可通知該程序銷毀並拉起新的子程序。程式碼邏輯大概這樣,但是遇到的問題是父行程的記憶體佔用逐漸變大,請問swoole大神們該如何解決?是不是因為父行程維護這個類似子行程池導致的呢?請賜教

父進程記憶體洩漏了,某些全域變數數組未即時釋放記憶體所導致的。檢查你的程式碼。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板