PHP-FPM 的三種執行模式

柳旦旦發表於2021-01-14

1:static 模式(靜態模式)

static 模式始終會保持一個固定數量的子程式,這個數量由pm.max_children 的配置決定

2:dynamic 模式(動態模式)

子程式的數量是動態變化的,啟動時,會生成固定數量的子程式,可以理解為最小子程式數,通過 pm.statr_servers 配置決定,而最大子程式數則由pm.max_children 控制,子程式數會在pm.start_servers ~ pm.max_children 範圍內波動,另外,閒置的子程式數還可以由 pm.min_spare_serverspm.max_spare_servers兩個配置引數控制。總結:閒置的子程式也可以有最小數目和最大數目,而如果閒置的子程式超過pm.max_spare_servers,則會別殺死。

3:ondemand 模式(動態需求模式)

這種模式和 dynamic 模式相反。因為這種模式把記憶體放在第一位,每個閒置程式在持續閒置了pm.process_idle_timeout 秒後就會被殺死,因為這種模式,到了伺服器低峰期的時候,記憶體就會降下來,如果伺服器長時間沒有請求,就只有一個主程式。其弊端是,遇到高峰期或者pm.process_idle_timeout 設定太小,無法避免伺服器頻繁建立程式的問題。

涉及到的引數配置:

  • pm.max_children :靜態方式下開啟 php-fpm 程式數量
  • pm.start_servers:動態方式下的起始 php-fpm 程式數量
  • pm.min_spare_servers:動態方式下的最小 php-fpm 程式數量
  • pm.max_spare_servers:動態方式下的最大 php-fpm 程式數量

PHP-FPM 慢日誌配置

配置檔案:php-fpm.conf

開啟慢日誌查詢:

slowlog = /usr/local/log/php-fpm.log.slow
request_slowlog_timeout = 5s

意思是當某個請求時間超過了5秒,就寫進慢日誌,注意是5s,別忘了單位。其他單位還有m分,h時,php-fpm會記錄對應的程式號,指令碼名稱,具體執行慢的程式碼行好等。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
專注細節,慢慢提升自己。✍️

相關文章