选择合适的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),减少内存页管理开销。