php-fpm進程管理一共有三種模式:ondemand、static、dynamic
ondemand
在php-fpm啓動的時候,不會給這個pool啓動任何一個worker,是按需啓動,當有連接過來纔會啓動。
優缺點
優點:按流量需求創建,不浪費系統資源(在硬件如此便宜的時代,這個優點略顯雞肋)
缺點:由於php-fpm是短連接的,所以每次請求都會先建立連接,建立連接的過程必然會觸發上圖的執行步驟,所以,在大流量的系統上master進程會變得繁忙,佔用系統cpu資源,不適合大流量環境的部署
dynamic
在php-fpm啓動時,會初始啓動一些worker,在運行過程中動態調整worker數量,worker的數量受限於pm.max_children配置,同時受限全局配置process.max
優缺點
優點:動態擴容,不浪費系統資源,master進程設置的1秒定時器對系統的影響忽略不計;
缺點:如果所有worker都在工作,新的請求到來只能等待master在1秒定時器內再新建一個worker,這時可能最長等待1s;
static
php-fpm啓動採用固定大小數量的worker,在運行期間也不會擴容,雖然也有1秒的定時器,僅限於統計一些狀態信息,例如空閒worker個數,活動worker個數,網絡連接隊列長度等信息。