調整PHP-FPM進程池配置
通過優化進程池參數,確保PHP-FPM啟動時有足夠的進程處理請求,避免因進程不足導致的延遲。關鍵參數包括:
優化Systemd服務配置
若使用Systemd管理PHP-FPM,可通過修改服務文件減少啟動延遲:
/etc/systemd/system/php7.x-fpm.service.d/override.conf
(或直接編輯服務文件)的[Service]
部分添加:ExecStartPre=/bin/sleep 5
(啟動前延遲5秒,避免瞬時高負載);StartLimitIntervalSec=0
(禁用啟動限制,防止服務啟動時的速率限制);StartLimitBurst=0
(設置啟動限制突發次數為0)。sudo systemctl daemon-reload
重新加載配置并重啟PHP-FPM。使用合適的進程管理模式
根據應用場景選擇進程管理模式,減少不必要的進程啟動開銷:
pm.start_servers
數量的進程,根據負載動態調整空閑進程數(適合大多數場景);pm = ondemand
),適合流量波動大但不需要持續運行的場景(需設置pm.process_idle_timeout
回收空閑進程,如10秒);pm = lazy
),進一步減少啟動時的進程創建開銷(但可能增加首次請求延遲)。啟用并配置OPcache
OPcache可緩存PHP腳本編譯后的字節碼,避免每次請求都重新編譯,顯著提升PHP執行速度。配置步驟:
sudo apt install php7.x-opcache
);php.ini
(或/etc/php/7.x/fpm/php.ini
)中啟用:zend_extension=opcache.so
;opcache.enable=1
;opcache.memory_consumption=128
(分配128MB內存給OPcache)、opcache.interned_strings_buffer=8
(內部字符串緩沖區大?。?、opcache.max_accelerated_files=4000
(最多緩存4000個腳本文件)、opcache.revalidate_freq=60
(每60秒檢查腳本是否更新)。優化系統內核參數
調整Linux內核參數,提升PHP-FPM的IO和網絡性能:
sudo sysctl -w fs.file-max=100000
;sudo sysctl -w vm.swappiness=10
;sudo sysctl -w net.core.somaxconn=4096
。/etc/sysctl.conf
以實現永久生效。使用Unix域Socket通信
若Web服務器(如Nginx)與PHP-FPM在同一臺服務器上,建議使用Unix域Socket(而非TCP)通信,減少網絡開銷。配置示例:
fastcgi_pass unix:/run/php/php7.x-fpm.sock;
;www.conf
中:listen = /run/php/php7.x-fpm.sock
(需確保Socket文件路徑一致且權限正確)。監控與日志分析
通過監控工具(如htop
、top
、systemd-cgtop
)實時查看PHP-FPM的CPU、內存使用情況,識別資源瓶頸;啟用慢日志定位執行慢的腳本:
www.conf
中添加:request_slowlog_timeout = 10s
(超過10秒的請求記錄為慢請求);slowlog = /var/log/php-fpm/www-slow.log
(慢日志路徑)。