温馨提示×

centos php配置慢如何处理

小樊
39
2026-09-21 02:07:38
栏目: 编程语言

在 CentOS 上“PHP 配置慢 / 访问慢”通常不是单一原因,需要从 PHP 本身、Web 服务、系统资源、代码 几个层面排查。下面给你一套实用排查与优化思路


一、先确认“慢”在哪里

先区分是:

  • PHP 页面响应慢
  • PHP-FPM 启动 / 重载慢
  • 数据库慢
  • 网络或 DNS 慢

快速判断

time curl http://localhost/test.php

如果 curl 慢,但静态文件快 → 基本是 PHP 问题


二、PHP-FPM 配置优化(最常见)

1. 查看 PHP-FPM 模式

php-fpm -v

CentOS 常见:php-fpm(非线程)

2. 调整 www.conf

路径一般在:

/etc/php-fpm.d/www.conf

关键参数(示例,2核4G)

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

三、关闭不必要的 PHP 模块(很重要)

CentOS 默认加载很多模块,会拖慢启动。

查看已加载模块

php -m

禁用无用模块

cd /etc/php.d/

把不用的 .ini 改名:

mv 20-xdebug.ini 20-xdebug.ini.disable

生产环境务必关闭:

  • xdebug
  • apc(老)
  • 不用的数据库驱动

四、OPcache 必须开(性能提升巨大)

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

五、Web 服务层(Nginx / Apache)

Nginx 示例(关键)

fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_read_timeout 30s;

✅ 用 socket 比 127.0.0.1 快


六、系统层面检查

1. 磁盘 IO

iostat -x 1

如果 %util 很高 → 磁盘瓶颈

2. 内存 & Swap

free -m

如果用了 swap → 很慢

3. CPU

top

看是否是 php-fpm 占满 CPU


七、代码 & 数据库层面

常见慢点

  • 每次请求连数据库慢(未用连接池)
  • 文件读写多
  • file_get_contents(http://) 外部请求
  • session 写在磁盘

优化建议

  • 数据库加索引
  • 用 Redis 存 session
  • 禁用 dns_lookup

八、慢日志(非常有用)

开启 PHP 慢日志

request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log
tail -f /var/log/php-fpm/slow.log

九、如果是“php -v / php.ini 加载慢”

说明是 CLI 启动慢

  • 模块太多
  • /etc/php.d 文件过多
  • SELinux / 审计系统

可临时测试:

strace php -v

十、总结(优先做这 5 步)

  1. ✅ 开 OPcache
  2. ✅ 优化 php-fpm pm 参数
  3. ✅ 禁用 xdebug / 无用模块
  4. ✅ 开 slow log 定位代码
  5. ✅ 用 socket 替代 TCP

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • PHP 版本
  • Nginx 还是 Apache
  • 页面慢 还是 php-fpm 启动慢

我可以直接给你一套针对性配置

0