温馨提示×

centos为啥php运行慢

小樊
39
2026-10-08 17:04:47
栏目: 编程语言

CentOS 上 PHP 运行慢,通常不是“CentOS 本身慢”,而是环境配置、资源、或代码层面的问题。下面按最常见原因 → 排查方法 → 解决思路给你梳理。


一、最常见原因(90% 都在这里)

1️⃣ PHP 运行模式不对(非常关键)

很多人用的是:

  • mod_php(Apache 内嵌)
  • 或 CGI / 普通 PHP
  • 或未启用 PHP-FPM

✅ 推荐:PHP-FPM + Nginx / Apache ❌ 慢:CGI、mod_php 高并发直接崩

检查:

ps aux | grep php-fpm

如果没有 php-fpm,基本就慢。


2️⃣ PHP-FPM 进程数太少

默认配置:

pm = dynamic
pm.max_children = 5

并发一高就排队。

查看是否排队:

tail -f /var/log/php-fpm/error.log

常见报错:

server reached pm.max_children

✅ 解决:

pm.max_children = 50~200(看内存)
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

3️⃣ 没有开启 OPcache(极其重要)

CentOS 默认 OPcache 是关的。

查看:

php -m | grep opcache

✅ 开启:

opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60

效果:PHP 速度直接翻倍


4️⃣ DNS 解析慢(超隐蔽)

PHP 里:

gethostbyname()
mail()
curl()

如果 DNS 慢,PHP 直接卡死。

✅ 检查:

nslookup example.com

✅ 解决:

  • 用 IP
  • 或配置 /etc/resolv.conf
  • 或禁用 mail()

5️⃣ 磁盘 IO 慢(云服务器常见)

尤其是:

  • 低配云盘
  • 大量 file_put_contents
  • session 存文件

✅ 检查:

iostat -x 1

✅ 优化:

  • session 存 redis
  • 静态资源走 CDN

二、CentOS 特有问题

6️⃣ SELinux 导致卡顿

SELinux 开启时,PHP 访问文件会非常慢。

检查:

getenforce

如果是 Enforcing:

setenforce 0

(生产建议配置策略,而不是直接关)


7️⃣ 防火墙 / fail2ban 影响

特别是:

  • 频繁连接外部
  • 被 fail2ban 拦截

三、代码层原因

8️⃣ 慢 SQL

PHP 本身快,但:

SELECT * FROM user WHERE name LIKE '%xx%'

✅ 方法:

slow query log
php xhprof / tideways

9️⃣ Composer 依赖太多

Laravel / Symfony:

  • 几千个文件
  • 没 OPcache 直接死

四、快速自检清单(照着做)

php -v
php -m | grep opcache
ps aux | grep php-fpm
free -m
top
iostat -x 1

五、如果你愿意,我可以更精准帮你

你可以直接贴:

  1. CentOS 版本
  2. PHP 版本
  3. Web 服务(Nginx / Apache)
  4. 是否用 PHP-FPM
  5. 是首页慢还是接口慢

我可以给你一套精准优化配置。

0 踩