選擇合適的PHP版本
使用最新的穩定版PHP(如PHP 8.x),新版本通常包含性能改進(如JIT編譯器、OPcache優化)和安全修復,能顯著提升php-fpm的執行效率。
調整PHP-FPM進程管理配置
進程池參數需根據服務器資源(CPU核心數、內存)和負載特性調整:
dynamic
(動態模式,適合負載波動大的場景),其次ondemand
(按需模式,適合低負載場景),避免static
(固定進程數,易浪費資源)。(可用內存 - 系統預留內存) / 單個PHP進程內存消耗
(如16GB內存、單個進程256MB,則設置為60左右),避免過多進程導致內存耗盡。啟用并優化OPcache
OPcache通過緩存編譯后的PHP字節碼,減少重復解析和編譯的開銷,是提升php-fpm性能的關鍵:
php.ini
中啟用:zend_extension=opcache.so
、opcache.enable=1
、opcache.enable_cli=1
(命令行也啟用)。opcache.memory_consumption
(如128-256MB,根據服務器內存調整),opcache.interned_strings_buffer
(如8-16MB,優化字符串存儲)。opcache.max_accelerated_files
(如4000-8000,覆蓋項目中所有PHP文件),opcache.revalidate_freq
(如60-300秒,平衡緩存更新頻率與性能)。優化進程資源限制
使用Unix Socket替代TCP Socket
若web服務器(如Nginx)與php-fpm在同一臺服務器上,將fastcgi_pass
從127.0.0.1:9000
改為Unix Socket(如unix:/run/php/php8.2-fpm.sock
),減少網絡協議棧的開銷,提升通信效率。
啟用APCu緩存
對于頻繁訪問的變量或數據(如數據庫查詢結果、配置信息),使用APCu緩存(extension=apcu.so
),減少重復計算和數據庫訪問。調整參數:apc.shm_size
(如64-128MB,根據緩存數據量調整),apc.ttl
(如3600秒,緩存項生存時間)。
優化PHP代碼
監控與調優
htop
(查看CPU/內存使用率)、vmstat
(查看I/O和進程狀態)、php-fpm status
(查看進程池狀態,如活躍進程數、空閑進程數)。slowlog
(slowlog = /var/log/php-fpm/www-slow.log
)和request_slowlog_timeout
(如10s),定位慢請求(如執行時間長的腳本),針對性優化。系統級優化
/etc/security/limits.conf
,增加* soft nofile 65535
和* hard nofile 65535
,允許進程打開更多文件。vm.nr_hugepages=1024
),減少內存頁管理開銷。