PHP FPM程序數修改

2021-09-11 06:04:37 字數 1561 閱讀 5625

php-fpm優化引數介紹

他們分別是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。

pm:表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。

在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置檔案的說明。

下面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的原因了。

對於記憶體大的伺服器(比如8g以上)來說,指定靜態的max_children實際上更為妥當,因為這樣不需要進行額外的程序數目控制,會提高效率。

因為頻繁開關php-fpm程序也會有時滯,所以記憶體夠大的情況下開靜態效果會更好。數量也可以根據 記憶體/30m 得到,比如8gb記憶體可以設定為100,

那麼php-fpm耗費的記憶體就能控制在 2g-3g的樣子。如果記憶體稍微小點,比如1g,那麼指定靜態的程序數量更加有利於伺服器的穩定。

這樣可以保證php-fpm只獲取夠用的記憶體,將不多的記憶體分配給其他應用去使用,會使系統的執行更加暢通。

對於小記憶體的伺服器來說,比如256m記憶體的vps,即使按照乙個20m的記憶體量來算,10個php-cgi程序就將耗掉200m記憶體,那系統的崩潰就應該很正常了。

因此應該盡量地控制php-fpm程序的數量,大體明確其他應用占用的記憶體後,給它指定乙個靜態的小數量,會讓系統更加平穩一些。或者使用動態方式,

因為動態方式會結束掉多餘的程序,可以**釋放一些記憶體,所以推薦在記憶體較少的伺服器或vps上使用。具體最大數量根據 記憶體/20m 得到。

比如說512m的vps,建議pm.max_spare_servers設定為20。至於pm.min_spare_servers,則建議根據伺服器的負載情況來設定,比如伺服器上只是部署php環境的話,比較合適的值在5~10之間。

檢視php fpm程序數 php fpm程序數設定

1.php fpm有3種管理方式static 子程序數固定 dynamic 子程序動態設定 onedemand 程序需要才產生 2.php fpm 程序數主要通過下面5個引數 pm.max children pm為static時表示建立的子程序數量,pm為dynamic時表示最大可建立的子程序數 p...

php fpm程序數優化

需要了解的引數是 pm pm.max children pm.start servers pm.min spare servers pm.max spare servers。pm 表示使用那種方式,有兩個值可以選擇,就是static 靜態 或者dynamic 動態 在更老一些的版本中,dynamic...

php fpm程序數優化方法

背景 自己的伺服器是雲伺服器,最近經常出現php fpm假死狀態,硬碟和記憶體都比較小,所以記憶體經常不夠使,通過linux命令檢視後,發現啟動php fpm程序數有20多個,占用了將近1g的記憶體,整個伺服器才1.5g的記憶體,最後通過對php fpm程序數優化解決了此問題,伺服器多節省出600m...