2 min read

php-fpm 進程管理

官方版php-fpm 進程修改位置

/usr/local/etc/php-fpm.d/www.conf

針對PHP-fpm 三種子進程管理模式,依序寫個文章紀錄

php8.2 版本

pm = static 固定進程數量

  • pm.max_children 同時能運行的最大子進程數。

pm = dynamic (預設) 動態進程數量

  • pm.max_children
    • 子進程最高數量上限。
    • 需要考慮每個php-fpm child process 的記憶體佔用量、系統可用記憶體總量、CPU核心數量進行配置。
    • 若設定異常
      • 太小會造成流量高峰時出現排隊或者502錯誤。
      • 太大會導致機器的CPU和RAM過度消耗而讓整體性能下降或崩潰。
  • pm.start_servers
    • 在啟動時預先建立的子行程數量。
    • 數值會介於 min_spare_serversmax_spare_servers 之間(至少不低於前者 min_spare_servers )
  • pm.min_spare_servers
    • 最小「閒置」的子進程數量
  • pm.max_spare_servers
    • 最大「閒置」的子進程數量
    • 必須大於等於 start_servers 才能保持正常運行
    • 不能超過 max_children 因為總數都會限制於該參數的上限
  • pm.max_spawn_rate
    • 限制FPM「每分鐘」最多能新產生的子進程的「速率」
    • 若速度太快,系統會按照該參數進行節流,避免短時間內大量生成子進程導致資源飆升。

參考來源

PHP-FPM三种运行模式
PHP FPM Max Children