天天看點

php-fpm.conf 配置檔案詳解

[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把結果回報給用戶端浏覽器

原文連結

php