Linux 下 PHP 性能调优实操指南
一 基础准备与测量
php -i | grep "Loaded Configuration File" 定位当前 CLI 与 FPM 使用的 php.ini;FPM 池配置通常在 /etc/php/<版本>/fpm/pool.d/www.conf。二 PHP 运行时与 OPcache 关键配置
opcache.enable=1,CLI 调试可设 opcache.enable_cli=1(避免生产开启以免掩盖问题)。opcache.memory_consumption 设为 128–256 MB 起步,opcache.max_accelerated_files 提升到 10000+(依据代码规模),opcache.interned_strings_buffer=8。opcache.revalidate_freq=60(生产常用 60s;开发可 0 实时)。opcache.validate_timestamps=1(开发),生产建议配合部署流程刷新 OPcache。memory_limit:如 128–256 MB;仅在确有大对象/导入场景再上调,避免无谓占用。max_execution_time:API/常规接口建议 30–60 s;长任务应改为异步队列。upload_max_filesize、post_max_size 仅按需放开,避免被滥用放大攻击面。三 PHP-FPM 进程与连接优化
pm=dynamic(通用、弹性好);高并发且稳定负载可用 pm=static(减少进程创建开销);低峰长连接可选 pm=ondemand(注意冷启动延迟)。max_children ≈ 可用内存 / 单进程内存,8 GB / 50 MB ≈ 160,为稳态与峰值波动建议保守设 100–120。start_servers ≈ min_spare + (max_spare − min_spare)/2;常见为 start=20,min=10,max=30。pm.max_requests=500–1000 定期回收,缓解内存泄漏与类加载膨胀;request_terminate_timeout 建议 30–60 s 保护后端;开启 slowlog 与 request_slowlog_timeout=5 定位慢请求。listen=/run/php/php<ver>-fpm.sock)替代 TCP,降低网络栈开销;必要时调大 listen.backlog=2048。ulimit -n 与 systemd 服务 LimitNOFILE 调高,避免 “Too many open files”。四 Web 服务器与数据层协同优化
StartServers、Min/MaxSpareServers、MaxRequestWorkers。mysqlcheck)。五 安全与维护建议