CentOS 上 PHP 性能优化实操指南
一 基础准备与版本选择
sudo systemctl restart php-fpm 使配置生效。二 PHP-FPM 进程与请求优化
pm.max_requests=0 稳定运行一段时间后观察 RSS 做校准。pm.start_servers=5、pm.min_spare_servers=5、pm.max_spare_servers=35 作为起点,结合并发与内存再微调。pm.max_requests=1000 定期回收进程以抑制内存膨胀;异常保护可用 emergency_restart_threshold=10、emergency_restart_interval=1m(按需启用)。request_slowlog_timeout=1s 并配置 slowlog 路径;同时开启 FPM 错误日志便于排错。systemctl reload php-fpm。三 php.ini 关键参数建议
memory_limit=256M(按应用调大到 512M 或更高)max_execution_time=30(长任务可适度上调)max_input_time=60opcache.enable=1opcache.memory_consumption=128(建议 128–256M)opcache.interned_strings_buffer=8opcache.max_accelerated_files=10000(大型项目可到 20000)opcache.enable_cli=1;生产环境按需关闭以避免缓存污染opcache.validate_timestamps=0 + 部署时主动清理/重启;若需热更新可用 validate_timestamps=1 并设 opcache.revalidate_freq=60display_errors=Off、log_errors=On、error_log=/var/log/php_errors.logdate.timezone=Asia/Shanghaiupload_max_filesize=10M、post_max_size=16Mdisable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_str,show_sourcesystemctl reload php-fpm 或 restart。四 缓存与数据层优化
session.save_path 指向 /dev/shm(内存文件系统)可显著减少磁盘 IO,注意服务器重启会丢失会话数据,适合无状态或可接受丢失的场景。五 系统与内存分配器优化
sudo yum install -y jemalloclsof -Pn -p $(pidof php-fpm) | grep jemalloc 或查看 /proc/<pid>/smapsnet.core.somaxconn、net.ipv4.tcp_tw_reuse、net.ipv4.tcp_fin_timeout 等)与文件句柄上限,缓解连接瓶颈与 TIME_WAIT 累积。