温馨提示×

ubuntu php配置为何变慢

小樊
46
2026-09-13 10:37:29
栏目: 编程语言

在 Ubuntu 上 PHP 变慢通常不是单一原因,而是环境、配置或代码层面叠加导致的。下面按最常见 → 较隐蔽的顺序给你系统排查思路。


一、最常见原因(先查这些)

1. PHP 运行模式不对(FPM / CLI / Apache)

很多人“感觉慢”,其实是模式用错。

  • Apache + mod_php:老、慢、占内存
  • Nginx + PHP-FPM(推荐):快
  • CLI 执行慢:可能是脚本本身问题

✅ 检查:

php -v
php -m

Web 环境看:

ps aux | grep php-fpm

2. PHP-FPM 进程数太少(高并发直接卡死)

默认配置很保守。

配置文件:

/etc/php/8.x/fpm/pool.d/www.conf

重点参数:

pm = dynamic
pm.max_children = 5   # 太小!
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

✅ 建议(4 核 8G 示例):

pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

重启:

systemctl restart php8.x-fpm

3. OPcache 没开(非常关键)

PHP 慢的 头号原因

检查:

php -i | grep opcache

如果没有:

apt install php8.x-opcache

配置:

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

二、系统 / 网络层面

4. DNS 解析慢(最常见隐蔽问题)

PHP 里用到:

  • gethostbyname()
  • mail()
  • 外部 API

如果 DNS 慢,PHP 直接卡。

✅ 测试:

time nslookup example.com

✅ 解决:

  • 127.0.0.1 代替 localhost
  • 配置 /etc/resolv.conf 为稳定 DNS

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

特别是:

  • 低配云盘
  • 日志疯狂写
  • session 文件存储

检查:

iotop
df -h

✅ 优化:

  • session 放内存:
session.save_handler = files
session.save_path = /dev/shm

三、PHP 配置本身问题

6. 错误显示 / 日志拖慢

display_errors = On
log_errors = On
error_log = /var/log/php_errors.log

✅ 生产环境:

display_errors = Off

7. 禁用了必要函数或加载过多模块

php -m

太多模块 = 启动慢。


四、代码层面(别忽略)

8. 慢查询 / 循环里查数据库

用:

xdebug

或:

blackfire

快速定位:

microtime(true);

五、快速自检清单(30 秒)

php -v
php -i | grep opcache
ps aux | grep php-fpm
systemctl status php8.x-fpm

六、如果你愿意,我可以更精确帮你

你可以直接贴:

  1. Ubuntu 版本
  2. PHP 版本
  3. Web 服务器(Nginx / Apache)
  4. 页面慢 还是 命令行慢
  5. php -i 关键部分

我可以帮你逐行看配置并指出瓶颈

0