文章目錄
伺服器跑起來就萬事大吉了嗎?其實在PHP-FPM 的世界裡,設定檔才是真正的幕後操盤手,決定了網站能否穩定、安全、有效率地運作。
什麼是PHP-FPM 的進程池配置?
PHP-FPM(FastCGI Process Manager)是PHP 的進程管理器,它透過「池」(pool)的概念來管理不同網站或應用的PHP 進程。
每一個 .conf 檔案就是一個池的定義,裡面規定了一個行程運行的使用者、監聽的連接埠或套接字、日誌路徑、行程數等關鍵參數。
換句話說,這些檔案就是你伺服器的“分身術”,讓不同網站各自獨立運行,互不干擾。

www. conf:預設的進程池
安裝PHP-FPM 後,系統會自動產生一個 www.conf 文件。
它的作用就是提供一個開箱即用的預設池,通常運行在 www-data 用戶下。
這個池適合單一站點環境,配置簡單,參數大多是通用值,例如:
user = www-datagroup = www-datalisten = /run/php/php8.3-fpm.sockpm.max_children = 5
如果你只跑一個站點,直接用這個就夠了。
etUfo.org .conf:自訂網站池
當你有多個網站時,就需要為每個網站單獨建立一個池。
比如 etufo.org.conf,它是針對域名 etUfo。ORG 的專屬配置。
常見的做法是:
- 指定不同的使用者和群組,例如
user = etufo,group = etufo - 設定獨立的監聽埠或套接字,例如
listen = /run/php/etufo.sock - 調整進程數量,確保高並發下站點仍穩定
- 獨立的日誌文件,方便排除問題
這種方式的好處是安全隔離:即使某個網站被攻擊,其他網站也不會受到牽連。
dummy.conf:範例或占位文件
dummy.conf 通常是系統提供的模板或範例。
它不會被實際啟用,除非你手動修改並啟用。
它的存在意義在於給你一個參考,告訴你如何寫一個新的池配置。
所以它更像一本“說明書”,而不是實際運行的配置。
為什麼要分多個池文件?
- 安全性:不同網站用不同使用者執行,避免權限交叉。
- 效能最佳化:每個池可以單獨設定進程數量,並依流量需求調整。
- 隔離性:日誌、錯誤輸出、監聽埠都分開,排錯更輕鬆。
舉個例子,如果 www.conf 崩了,etufo.org.conf 依然能正常跑,不會拖垮整個伺服器。
實際應用場景
- 單一站點伺服器:只用
www.conf就夠。 - 多站點伺服器:為每個站點建造一個
.conf文件,例如etufo.org.conf。 - dummy.conf:僅供參考,不建議啟用。
配置對比範例
www. conf(預設池)
[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 5
etufo.org.conf(自訂池)
[etufo.org]
user = etufo
group = etufo
listen = /run/php/etufo.sock
pm = dynamic
pm.max_children = 20
access.log = /var/log/php-fpm/etufo.access.log
你會發現,差別就在於使用者、監聽地址和進程數量。
調整PHP-FPM 進程池參數
如果配置使用了 動態,這是一種預先啟動部分工作進程,並根據請求量動態調整的方式,能夠在請求量突增時更快回應。
對於有一定訪問量的網站,建議使用 pm = dynamic,因為它可以保持一定的空閒進程,避免高並發時出現500 錯誤。
只有在訪問量極低、記憶體資源緊張的情況下,才建議使用 pm = ondemand 來節省資源。
建議改為dynamic,並優化 pm.max_children 等參數:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
這樣配置既能確保效能,又能避免資源浪費。
具體配置方法可參考以下教學 ▼
根據PHP 官方文檔的說明:
“Each pool can be configured independently, allowing for different users, limits, and settings per application.”
這句話明確指出了多池配置的意義:獨立、靈活、可控制。
結語:我的觀點
伺服器配置就像樂隊指揮,決定了每個樂器該如何演奏。
www.conf 是預設的指揮,適合單人演奏;etufo.org.conf 是為特定舞台量身訂做的指揮;而 dummy.conf 則是一本樂譜草稿,提醒你如何寫出新的旋律。
在資訊安全與效能優化的時代,懂得合理使用這些設定文件,就是掌握了伺服器的命脈。
配置不是瑣碎的文字,而是伺服器的靈魂。
如果你在營運WordPress多站點,強烈建議你立即檢查並優化這些池文件,尤其是進程池參數的設置,讓你的伺服器真正做到穩如磐石。
希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《PHP-FPM /etc/php/8.3/fpm/pool.d/ 設定檔的差異與最佳化技巧》,對您有幫助。

