php-fpm的兩種進程管理模式詳解

php-fpm的兩種進程管理模式
php-fpm的進程數也是能夠根據設置分爲動態和靜態的。
一種是直接開啓指定數量的php-fpm進程,再也不增長或者減小;
另外一種則是開始的時候開啓必定數量的php-fpm進程,當請求量變大的時候,動態的增長php-fpm進程數到上限,當空閒的時候自動釋放空閒的進程數到一個下限。
這兩種不一樣的執行方式,能夠根據服務器的實際需求來進行調整。
這裏先說一下涉及到這個的幾個參數吧,他們分別是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。
pm表示使用那種方式,有兩個值能夠選擇,就是static(靜態)或者dynamic(動態)。
在更老一些的版本中,dynamic被稱做apache-like。這個要注意看配置文件給出的說明了。PHP5.3
php-fpm的默認靜態處理方式會使得php-cgi的進程長期佔用內存而沒法釋放,這也是致使nginx出錯的緣由之 一,所以能夠將php-fpm的處理方式改爲apache模式。
下面4個參數的意思分別爲:
    pm.max_children:靜態方式下開啓的php-fpm進程數量。
    pm.start_servers:動態方式下的起始php-fpm進程數量。
    pm.min_spare_servers:動態方式下的最小php-fpm進程數量。
    pm.max_spare_servers:動態方式下的最大php-fpm進程數量。
若是dm設置爲static,那麼其實只有pm.max_children這個參數生效。系統會開啓設置的數量個php-fpm進程。

如 果dm設置爲dynamic,那麼pm.max_children參數失效,後面3個參數生效。系統會在php-fpm運行開始的時候啓動 pm.start_servers個php-fpm進程,而後根據系統的需求動態在pm.min_spare_servers和 pm.max_spare_servers之間調整php-fpm進程數。

那麼,對於咱們的服務器,選擇哪一種執行方式比較好呢?事實上,跟Apache同樣,咱們運行的PHP程序在執行完成後,或多或少會有內存泄露的問題。

這 也是爲何開始的時候一個php-fpm進程只佔用3M左右內存,運行一段時間後就會上升到20-30M的緣由了。因此,動態方式由於會結束掉多餘的進 程,能夠回收釋放一些內存,因此推薦在內存較少的服務器或者VPS上使用。具體最大數量根據 內存/20M 獲得。好比說512M的VPS,建議pm.max_spare_servers設置爲20。至於pm.min_spare_servers,則建議根據服 務器的負載狀況來設置,比較合適的值在5~10之間。

而後對於比較大內存的服務器來講,設置爲靜態的話會提升效率。由於頻繁開關php-fpm進程也會有時滯,因此內存夠大的狀況下開靜態效果會更好。數量也能夠根據內存/30M 獲得。好比說2GB內存的服務器,能夠設置爲50;4GB內存能夠設置爲100等。php

相關文章
相關標籤/搜索