在Debian LNMP環境中優化PHP-FPM可從以下方面入手:
進程管理優化
dynamic
模式(動態調整進程數),適合流量波動場景;static
模式(固定進程數)適合內存充足、負載穩定的場景。pm.max_children
:根據服務器內存和CPU計算(如總內存-系統預留-其他服務占用
)÷單個進程內存,建議預留20%冗余。pm.start_servers
:設置為CPU核心數×2,快速響應初始請求。pm.min/max_spare_servers
:分別設置為CPU核心數和CPU核心數×4,平衡資源利用率。pm.max_requests
:設置為500-1000,防止內存泄漏,定期重啟子進程。性能參數調優
request_terminate_timeout
:根據業務類型設置(API建議10-30秒,后臺任務可更高),避免長時間阻塞。request_slowlog_timeout
:設置為3-5秒,記錄慢請求日志,便于排查性能瓶頸。listen_backlog
:與系統net.core.somaxconn
參數保持一致(建議2048),避免連接隊列溢出。資源限制與權限
php-fpm.conf
中設置rlimit_files=65535
,并修改系統級限制(/etc/security/limits.conf
和systemd
服務配置)。memory_limit
參數調整單個進程內存(如普通請求128M,大內存任務256M)。日志與監控
slowlog
路徑并分析慢查詢,優化低效代碼。pm.status_path
配置狀態頁面(如/status
),使用工具(如php-fpm status
)實時查看進程狀態。其他優化
php.ini
中開啟并配置緩存大?。ㄈ?28-256M),顯著提升PHP執行效率。fastcgi_pass
指向正確socket,調整fastcgi_buffers
(建議8-16塊,每塊16-32K)提升傳輸效率。配置示例(動態模式,4核8GB服務器):
[www]
pm = dynamic
pm.max_children = 60
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 16
pm.max_requests = 1000
request_terminate_timeout = 30s
request_slowlog_timeout = 3s
slowlog = /var/log/php-fpm/slow.log
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
rlimit_files = 65535
優化后需重啟PHP-FPM服務:sudo systemctl restart php7.4-fpm
,并通過監控工具(如htop
、Prometheus
)驗證效果。