PHP-FPM 的管理和配置
PHP-FPM 是什麼?
PHP-FPM 是 FastCGI 的程序管理器。
PHP-FPM 的特點
- 支援平滑停止、啟動的高階程序管理功能
- 動、靜態子程序產生
- 慢日誌,記錄指令碼執行所導致的異常緩慢
- 可以監聽不同的埠和使用不同的 php.ini
PHP-FPM 的管理和配置
PHP-FPM 管理
master 主程序理解以下訊號:
- INT,TERM 立刻終止
- QUIT 平滑終止
- USR1 重新開啟日誌檔案
- USR2 平滑過載所有 worker 程序並重新載入配置和二進位制模組
# 檢視 php-fpm 使用者 ps aux | grep php-fpm # 檢視 php-fpm 程序 pid ps -ef | grep php-fpm # 啟動 php-fpm php-fpm -D # 關閉 php-fpm kill -INT [pid] # 重啟 php-fpm kill -USR2 [pid]
ps
是展示當前程序的快照。
PHP-FPM 配置
/etc/php-fpm.d 資料夾中包含了所有程序池的配置,在主配置檔案/etc/php-fpm.conf 中有下面一行:
include=/etc/php-fpm.d/*.conf
php-fpm.conf 的主配置檔案包含全域性配置,子配置是不同程序池的配置,例如 www。
全域性配置
# s 秒,m 分,h 小時,d 天 # 子程序在 emergency_restart_interval 設定的時間內收到該引數設定次數的 SIGSEGV 或者 SIGBUS退出資訊號,則FPM會重新啟動 emergency_restart_threshold 10 # 平滑重啟的間隔時間: emergency_restart_interval 1m # 子程序接受主程序複用訊號的超時時間 process_control_timeout 10s
程序池配置
# 接收 FastCGI 請求的地址 listen: 'ip:port', '/path/to/unix/socket' # 設定程序管理器如何管理子程序 pm: static 固定數量, ondemand 程序在有需求時才產生, dynamic 動態設定
static 和 dynamic 配置
記憶體比較少,併發量不是很大的應用,可以考慮採用 dynamic 的方式,這樣可以控制 php-fpm 所消耗的總記憶體數。
在併發高或者流量波動大的情況下,使用 static 可以在高併發下獲得比 dynamic 更快的響應速度。
可配置程序數量 = php-fpm 可配置記憶體/ (php-fpm 子程序的記憶體佔用 * 1.2)