1. 程式人生 > >Nginx(十五):Nginx併發優化專題(3)——php-fpm優化

Nginx(十五):Nginx併發優化專題(3)——php-fpm優化

pm = dynamic

pm.max_children = 300

pm.start_servers = 50

pm.min_spare_servers = 50

pm.max_spare_servers = 300

pm.max_requests = 10000

rlimit_files = 65535

request_slowlog_timeout = 2
slowlog = log/$pool.log.slow

pm = dynamic    設定成 static效能可以有大幅提升

pm.max_children:靜態方式下開啟的php-fpm程序數量,在動態方式下他限定php-fpm的最大程序數(這裡要注意pm.max_spare_servers的值只能小於等於pm.max_children)
pm.start_servers:動態方式下的起始php-fpm程序數量。
pm.min_spare_servers:動態方式空閒狀態下的最小php-fpm程序數量。
pm.max_spare_servers:動態方式空閒狀態下的最大php-fpm程序數量。
如果dm設定為static,那麼其實只有pm.max_children這個引數生效。系統會開啟設定的數量個php-fpm程序。

pm.max_requests = 10000#併發數越大,這個最大請求數應該越大,併發數小,這個數值也應該越小。它表示,php-fpm程序響應了10000個併發請求之後,就自動重啟一下程序。

rlimit_files = 65535         增加php-fpm開啟檔案描述符的限制

request_slowlog_timeout = 2     開啟慢日誌
slowlog = log/$pool.log.slow       慢日誌路徑


如果dm設定為dynamic,4個引數都生效。系統會在php-fpm執行開始時啟動pm.start_servers個php-fpm程序,然後根據系統的需求動態在pm.min_spare_servers和pm.max_spare_servers之間調整php-fpm程序數。


那麼,對於伺服器,選擇哪種執行方式比較好呢?事實上,跟Apache一樣,執行的PHP程式在執行完成後,或多或少會有記憶體洩露的問題。這也是為什麼開始時一個php-fpm程序只佔用3M左右記憶體,執行一段時間後就會上升到20-30M的原因了。(www. 指令碼學堂)


所以,動態方式因為會結束掉多餘的程序,可以回收釋放一些記憶體,所以推薦在記憶體較少的伺服器或者VPS上使用。具體最大數量根據 記憶體/20M 得到。
比如說512M的VPS,建議pm.max_spare_servers設定為20(512*0.8/20)。至於pm.min_spare_servers,則建議根據伺服器的負載情況來設定,比較合適的值在5~10之間。


然後對於比較大記憶體的伺服器來說,設定為靜態的話會提高效率。
因為頻繁開關php-fpm程序也會有時滯,所以記憶體夠大的情況下開靜態效果會更好。數量也可以根據 記憶體/30M 得到。

比如說2GB記憶體的伺服器,可以設定為50;4GB記憶體可以設定為100等。

參考資料:http://blog.csdn.net/skykingf/article/details/51957298