調整進程管理參數
pm.max_children
為服務器內存可承載的進程數(公式:(總內存-系統預留-其他服務內存)÷單個進程內存
)。pm.start_servers=CPU核心數×2
,pm.min_spare_servers=CPU核心數
,pm.max_spare_servers=CPU核心數×4
,并搭配 pm.process_idle_timeout=10-30s
控制空閑進程回收。pm.max_children
為保守值(如20-50),pm.process_idle_timeout=60s
以上。pm.max_requests=500-1000
,防止進程內存泄漏,定期重啟。優化PHP內存配置
php.ini
中設置 memory_limit
,普通請求建議128M,大內存場景(如圖片處理)可設256M。opcache.enable=1
,opcache.memory_consumption=64-128M
,opcache.max_accelerated_files=4000
。系統級優化
php-fpm.conf
中設置 rlimit_files=65535
,并在系統級通過 ulimit -n 65535
或 /etc/security/limits.conf
永久生效。top/htop
監控內存使用,通過 ps -eo %mem,rss,vsize,cmd | grep php-fpm
排查異常進程;開啟FPM狀態頁(pm.status_path=/status
)實時查看進程狀態。代碼與架構優化
unset()
,避免循環引用),可通過Xdebug分析內存使用。硬件與擴展
操作步驟:修改配置后,重啟PHP-FPM服務:sudo systemctl restart php{版本}-fpm
,并通過監控工具驗證優化效果。
參考來源: