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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章