我想澄清一下如何使用php-fpm管理工作流程動態流程管理器。php-fpm如何使用動態流程管理器管理工作人員?
假設我們有如下配置:
pm = dynamic
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
- 當PHP-FPM開始,它產生30個過程
- 沒有連接。請問php-fpm根據min_spare_servers的設置關閉了10個工人?如果是,那麼在什麼時候會發生?
- 有40個連接到nginx。請問php-fpm會爲每個單獨的工作人員提供連接,並立即產生額外的工作人員來滿足剩餘的連接?
- 有80個連接到nginx。在推出60名員工後,php-fpm將如何表現?與(3)相同嗎?
- 有120個連接到nginx。將100名工作人員分配到100個連接後會發生什麼? php-fpm是否使用連接隊列?它會限制nginx嗎?請問php-fpm開始刪除連接消息「server reached pm.max_children setting」?
- 有50個連接到nginx。 Nginx會從100回到60個連接嗎?還是50?它會立即殺死40名工人還是會等一段時間?
正如你看到的,這是相當關於PHP-FPM如何管理流程的通用問題。更具體地說,我想了解在php-fpm中pm.max_children和pm.max_spare_servers之間的區別。
感謝您的詳細解答!你能否澄清你對5的答案?主要是,將php-fpm隊列連接,或只是放棄它們? –
啓用狀態頁面可以獲得一些與隊列相關的數據。 參數'listen queue len'定義可以排隊的最大連接數量。這個數字在池配置中定義 - 「listen.backlog」。由於php-fpm使用文件/ tcp套接字,所以這個數字受限於在/ proc/sys/net/core/somaxconn中定義的系統變量 – antonbormotov
忘記了,如果隊列滿了,即將到來的請求將被拒絕。 – antonbormotov