解決php-fpm進程不釋放記憶體問題
上透過減少php- fpm進程總數來達到減少php-fpm記憶體佔用的問題,實際使用過程中發現php-fpm進程還存長期佔用記憶體而不釋放的問題。解決的方法就是減少pm.max_requests數。 (推薦學習:PHP程式設計從入門到精通)
最大請求數max_requests,即當一個PHP-CGI 進程處理的請求數累積到max_requests 個後,自動重啟該進程,這樣達到了釋放記憶體的目的了。以1GB記憶體的VPS主機設定為例(如果你設定的數值沒有達到釋放記憶體可以繼續調低):
pm.max_requests = 500
當php-fpm行程達到了pm.max_requests設定的數值後,就會重啟該進程,從而釋放記憶體。下圖是我測試後的效果,可以看出php-fpm進程被強制結束並釋放了記憶體。
對於大記憶體以及對並發和可用性要求的話,建議使用static管理模式 最大的pm.max_children。如果是小型記憶體的伺服器,建議使用dynamic或ondemand模式,同時降低pm.start_servers和pm.max_spare_servers進程數。
以上是php進程不釋放記憶體的詳細內容。更多資訊請關注PHP中文網其他相關文章!