1. 升级PHP至最新稳定版本
最新版本的PHP(如PHP 8.x)通常包含性能改进、内存优化及安全更新,能有效提升脚本执行效率。例如,PHP 8引入了JIT(即时编译)技术,对CPU密集型任务提升显著。
2. 启用并优化OPcache扩展
OPcache通过缓存编译后的PHP字节码,避免重复解析和编译,大幅减少脚本执行时间。需在php.ini中添加以下配置:
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # 缓存内存大小(MB,根据服务器内存调整)
opcache.interned_strings_buffer=8 # 内部字符串缓冲区大小
opcache.max_accelerated_files=4000 # 最大加速文件数(根据项目文件数量调整)
opcache.revalidate_freq=60 # 文件修改检查频率(秒)
重启PHP-FPM使配置生效。
3. 调整PHP-FPM进程管理参数
PHP-FPM的进程模式(dynamic/static/ondemand)和数量直接影响并发处理能力。推荐使用dynamic模式(动态调整进程数),配置示例如下:
pm = dynamic
pm.max_children = 50 # 最大子进程数(建议为CPU核心数的2-3倍)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 35 # 最大空闲子进程数
pm.max_requests = 500 # 每个子进程处理的最大请求数(防止内存泄漏)
重启PHP-FPM使配置生效。
4. 优化Nginx与PHP-FPM通信配置
调整Nginx的FastCGI缓冲区大小和超时设置,减少数据传输延迟和连接中断风险:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 确保路径与PHP-FPM配置一致
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 缓冲区配置
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
# 超时设置
fastcgi_read_timeout 300s; # 读取超时时间
fastcgi_send_timeout 300s; # 发送超时时间
}
重启Nginx使配置生效。
5. 优化PHP代码逻辑
unset()释放不再使用的变量,关闭数据库连接、文件句柄等资源。6. 调整PHP内存限制
根据应用需求调整memory_limit(如256M-512M),避免因内存不足导致脚本终止。需平衡性能与服务器资源,避免设置过高导致内存耗尽。
7. 使用缓存技术减轻服务器压力
proxy_cache模块),直接返回缓存内容,降低PHP处理负担。8. 监控与日志分析
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 10s # 慢请求阈值(秒)