洞悉本質在不確定的世界預見未來

php-fpm進程管理器的配置文件www.conf詳解

隻說重點


# 進程池設置
[www]

# 啟動進程的用戶,用戶組
user = www-data
group = www-data
# 用socket連接方式時,指定擁有unix socket權限的用戶,默認和運行的用戶一樣;用tcp連接可以注釋掉
;listen.mode = 0666
# 当支持POSIX访问控制列表时,可以使用以下命令进行设置。 这些选项值,
# 是用逗号分隔的 user/group 名称列表。设置后,将忽略listen.owner和listen.group
;listen.acl_users =
;listen.acl_groups =

# 監聽設置,即nginx中php處理的地址,一般默認值即可。
# 可用格式為: 'ip:port', 'port','/path/to/unix/socket'. 
listen = /run/php/php7.4-fpm.sock

# backlog數,可以理解為TCP中的半連接數,默認值511,-1表示無限制,由操作系統決定。
;listen.backlog = 511

# 允許訪問FastCGI進程的IP,設置any為不限制IP,如果要設置其他主機的nginx也能訪問這台FPM進程,
# listen處要設置成本地可被訪問的IP。
# 默認值是any。每個地址是用逗號分隔. 如果沒有設置或者為空,則允許任何服務器請求連接
;listen.allowed_clients = 127.0.0.1

# 選擇進程池管理器如何控制子進程的數量,選項有static和dynamic、ondemand。
# 對於專用服務器,pm可以設置為static。如果選擇static,則由pm.max_children指定固定的子進程數。
# 如果選擇dynamic,則由pm.max_children、pm.start_servers、 
# pm.min_spare_servers、pm.max_spare_servers 參數決定。
# 這四個參數的意思是,運行時fork出pm.start_servers個進程,隨著負載的情況,動態的調整,
# 最多不超過pm.max_children個進程。同時,保證閒置進程數不少於pm.min_spare_servers數量,
# 否則新的進程會被創建,當然也不是無限制的創建,最多閒置進程不超過pm.max_spare_servers數量,
# 超過則一些閒置進程被清理。
# 如果選擇ondemand,當有請求時,創建進程,啟動不創建,最多不超過pm.max_chindren進程數,
# 當進程閒置會在pm.process_idle_timeout秒後被及時釋放。
pm = dynamic

# 靜態方式下開啟的php-fpm進程數量,同一時刻最大存活子進程數
pm.max_children = 10

# php-fpm在啟動時等待請求的子進程數量
# 默認值為:min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2

# 處於空閒"idle"狀態的最小子進程,如果空閒進程數量小於這個值,那麼相應的子進程會被創建
pm.min_spare_servers = 1

# 最大空閑子進程數量,空閑子進程數量超過這個值,那麼相應的子進程會被殺掉。
pm.max_spare_servers = 3

# 空閒多少秒之後進程會被殺掉,默認為10s
;pm.process_idle_timeout = 10s

# 終止請求超時時間,在worker進程被殺掉之後,提供單個請求的超時間隔。
# 由於某種原因不停止腳本執行時,應該使用該選項,0表示關閉不啟用
# 當PHP運行在php-fpm模式下,php.ini配置的max_execute_time是無效的,
# 需要在php-fpm配置中配置另一項:request_terminate_timeout;
# 這段配置的意思是,表示等待120秒後,結束那些沒有自動結束的php腳本,以釋放占用的資源。
request_terminate_timeout = 120

# 每個進程處理多少個請求之後自動終止,可以有效防止內存溢出,如果為0則不會自動終止,默認為0
# 設置每個子進程重生之前服務的請求數. 對於可能存在內存洩漏的第三方模塊來說是非常有用的。 
# 如果設置為 '0' 則一直接受請求。等同於 PHP_FCGI_MAX_REQUESTS 環境變量。 默認值: 0.
# 這段配置的意思是,當一個 PHP-CGI 進程處理的請求數累積到 500 個後,自動重啟該進程。
pm.max_requests = 300

# 註冊的URI,以展示php-fpm狀態的統計信息。其中統計頁面信息有:
# pool 進程池名稱
# process manager 進程管理器名稱(static, dynamic or ondemand)
# start time php-fpm啟動時間
# start since php-fpm啟動的總秒數
# accepted conn 當前進程池接收的請求數
# listen queue 等待隊列的請求數
# max listen queue 自啟動以來等待隊列中最大的請求數
# listen queue len 等待連接socket隊列大小
# idle processes 當前空閒的進程數
# active processes 活動的進程數
# total processes 總共的進程數(idle+active)
# max active processes 自啟動以來活動的進程數最大值
# max children reached 達到最大進程數的次數
;pm.status_path = /status

# ping url,可以用來測試php-fpm是否存活並可以響應
;ping.path = /ping

# ping url的響應正文返回為 HTTP 200 的 text/plain 格式文本. 默認值: pong.
;ping.response = pong

# 慢請求日誌,配合request_slowlog_timeout使用
;slowlog = log/$pool.log.slow

# 慢日誌請求超時時間,對一個php程序進行跟蹤。設置為 '0' 表示 'Off'
request_slowlog_timeout = 10s

# 慢速日誌堆棧跟蹤的深度。默認值:20
;request_slowlog_trace_depth = 20

# 設置單個請求的超時中止時間。該選項可能會對php.ini設置
# 中的'max_execution_time'因為某些特殊原因沒有中止運行的腳本有用
# 設置為 '0' 表示 'Off'.當經常出現502錯誤時可以嘗試更改此選項。
;request_terminate_timeout = 0

# 設置文件打開描述符的rlimit限制. 默認值: 系統定義值默認可打開句柄是1024,
# 可使用 ulimit -n查看,ulimit -n 2048修改。
;rlimit_files = 1024

# 設置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整數. 
# 默認值: 系統定義值.
;rlimit_core = 0

# 啟動時的Chroot目錄. 所定義的目錄需要是絕對路徑. 如果沒有設置, 則chroot不被使用.
;chroot =

# 設置啟動目錄,啟動時會自動Chdir到該目錄. 所定義的目錄需要是絕對路徑. 
# 默認值: 當前目錄,或者/目錄(chroot時)
;chdir = /var/www

# 重定向運行過程中的stdout和stderr到主要的錯誤日誌文件中. 如果沒有設置,
# stdout 和 stderr 將會根據FastCGI的規則被重定向到 /dev/null . 默認值: no.
;catch_workers_output = yes
back to top