[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
#錯誤級别. 可用級别為: alert(必須立即處理), error(錯誤情況), warning(警告情況), notice(一般重要資訊), debug(調試資訊). 預設: notice.
rlimit_files = 65535
#設定核心rlimit最大限制值.
[www]
user = joy
group = joy
listen = 127.0.0.1:9000
#fpm監聽端口,即nginx中php處理的位址
listen.backlog = 2048
#backlog數,-1表示無限制,由作業系統決定,此行注釋掉就行。
pm = dynamic
pm.max_children = 1024
#,子程序最大數
pm.start_servers = 10
#控制服務啟動時建立的程序數
pm.min_spare_servers = 10
#,保證空閑程序數最小值,如果空閑程序小于此值,則建立新的子程序
pm.max_spare_servers = 60
#保證空閑程序數最大值,如果空閑程序大于此值,此進行清理
pm.max_requests = 102400
#設定每個子程序重生之前服務的請求數. 對于可能存在記憶體洩漏的第三方子產品來說是非常有用的. 如果設定為 ‘0’ 則一直接受請求. 等同于 PHP_FCGI_MAX_REQUESTS 環境變量. 預設值: 0.
request_terminate_timeout = 10s
#設定單個請求的逾時中止時間. 該選項可能會對php.ini設定中的’max_execution_time’因為某些特殊原因沒有中止運作的腳本有用. 設定為 ‘0’ 表示 ‘Off’.當經常出現502錯誤時可以嘗試更改此選項。
request_slowlog_timeout = 10s
#當一個請求該設定的逾時時間後,就會将對應的PHP調用堆棧資訊完整寫入到慢日志中. 設定為 ‘0’ 表示 ‘Off’
slowlog = var/log/$pool.log.slow
#慢請求的記錄日志,配合request_slowlog_timeout使用
- 設定”max_children”也需要根據伺服器的性能進行設定,一台伺服器正常情況下每一個php-cgi所耗費的記憶體在20M左右,因 此我的”max_children”我設定成40個,20M*40=800M也就是說在峰值的時候所有PHP-CGI所耗記憶體在800M以内,低于我的有 效記憶體1Gb。而如果我的”max_children”設定的較小,比如5-10個,那麼php-cgi就會“很累”,處理速度也很慢,等待的時間也較 長。如果長時間沒有得到處理的請求就會出現504 Gateway Time-out這個錯誤,而正在處理的很累的那幾個php-cgi如果遇到了問題就會出現502 Bad gateway這個錯誤。
- nginx會直接把 請求轉交給php-fpm,而php-fpm再配置設定php-cgi程序來處理相關的請求,之後再依次傳回,最後由nginx把結果回報給用戶端浏覽器
原文連結