ondemand,static,dynamic(內存優先、靜態池、服務優先)php
php-fpm啓動的時候不會啓動worker進程,按需啓動worker,有連接進來後,纔會啓動服務器
listen = 127.0.0.1:9001 pm = ondemand pm.process_idle_timeout = 60 pm.max_children = 10
鏈接到來時(只有連接,不沒有數據也會建立,telnet也會建立),建立新worker進程,worker進程數的建立收max_children設置限制,也受限於全局的process.max設置(三種模式都受限此,下文中有全局配置項講解),若是空閒時間超過了process_idle_timeout的設置就會銷燬worker進程併發
會初始化建立一部分worker,在運行過程當中,動態調整worker數量,最大worker數受pm.max_children和process.maxphp-fpm
listen = 127.0.0.1:9001 pm = dynamic pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 6
啓動固定大小數量的worker,也有1s的定時器,用於統計進程的一些狀態信息,例如空閒worker個數,活動worker個數性能
pm.max_children = 10 #必須配置這個參數,並且只有這個參數有效
動態創建進程個數spa
靜態進程個數日誌
# 全局設置 process.max = 10 #最大進程數 # www.conf user = nobody # 進程發起的用戶和用戶組,nobody爲任意用戶,user必須設置,group不用 group = www listen = [::]:9000 pm = dynamic # 進程池管理器如何控制子進程數量,static,靜態,固定值 dynamic 動態 ondemand pm.max_children = 16 # 同一時刻可以存活的最大子進程數 pm.start_servers = 4 # 啓動時啓動的子進程數 pm.min_spare_servers = 2 # 處於空閒 idle狀態的最小進程,若是空閒進程數量小於這個值,那麼相應的子進程會被建立, 能夠有效的減小建立的進程數,請求處理不過來,纔會按部就班的建立 pm.max_spare_servers = 16 # 最大空想進程數,空閒子進程數超過這個值,那麼相應的子進程會被殺掉 catch_workers_output = yes # worker進程的標準輸出和錯誤輸出會重定向到錯誤日誌中,沒有設置會輸出到/dev/null ;slowlog = xxx # 默認關閉,慢日誌路徑 ;request_slowlog_timeout = 0 # 腳本執行超過多久就記錄到日誌文件