在 CentOS 上“PHP 配置慢 / 访问慢”通常不是单一原因,需要从 PHP 本身、Web 服务、系统资源、代码 几个层面排查。下面给你一套实用排查与优化思路。
先区分是:
time curl http://localhost/test.php
如果 curl 慢,但静态文件快 → 基本是 PHP 问题
php-fpm -v
CentOS 常见:php-fpm(非线程)
www.conf路径一般在:
/etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
request_terminate_timeout = 30s
⚠️ 注意:
pm.max_children 不是越大越好max_children × 单个PHP进程内存 < 总内存
查看 PHP 进程内存:
ps aux | grep php-fpm
CentOS 默认加载很多模块,会拖慢启动。
php -m
cd /etc/php.d/
把不用的 .ini 改名:
mv 20-xdebug.ini 20-xdebug.ini.disable
✅ 生产环境务必关闭:
yum install php-opcache
配置:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
重启:
systemctl restart php-fpm
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_read_timeout 30s;
✅ 用 socket 比 127.0.0.1 快
iostat -x 1
如果 %util 很高 → 磁盘瓶颈
free -m
如果用了 swap → 很慢
top
看是否是 php-fpm 占满 CPU
file_get_contents(http://) 外部请求session 写在磁盘dns_lookuprequest_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log
tail -f /var/log/php-fpm/slow.log
说明是 CLI 启动慢:
/etc/php.d 文件过多可临时测试:
strace php -v
如果你愿意,可以告诉我:
我可以直接给你一套针对性配置。