温馨提示×

ubuntu php为何变慢

小樊
39
2026-09-25 16:11:59
栏目: 编程语言

在 Ubuntu 上 PHP 变慢,通常不是单一原因,而是环境、配置、代码或系统资源的综合问题。下面按最常见 → 较少见的顺序给你系统排查思路。


一、最常见原因(80% 情况)

1. PHP 运行模式不对(FPM / CGI / CLI 混淆)

很多人以为“装了 PHP 就快”,其实:

  • mod_php(Apache 内嵌)✅ 快
  • php-fpm + Nginx ✅ 快(推荐)
  • CGI ❌ 很慢
  • CLI 执行 ≠ Web 请求速度

✅ 检查:

php -v

Web 下看:

phpinfo();

2. php-fpm 配置过低(并发不够)

Ubuntu 默认 www.conf 很保守。

查看:

/etc/php/*/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

✅ 建议(4G 内存示例):

pm.max_children = 30
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15

重启:

systemctl restart php*-fpm

3. Opcache 没开(非常关键)

没开 Opcache,PHP 每次都重新编译,慢 3–10 倍。

检查:

php -i | grep opcache

✅ 开启:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000

重启 PHP。


4. 磁盘 I/O 慢(云服务器常见)

Ubuntu + 机械盘 / 低 IOPS 云盘:

  • Composer
  • 日志
  • Session 文件

✅ 检查:

iotop
df -h

Session 放内存:

session.save_path = /dev/shm

二、代码 & 框架问题

5. 框架 Debug 模式开着

Laravel / Symfony:

APP_DEBUG=true   # 慢

✅ 生产必须:

APP_DEBUG=false

6. 大量文件 autoload

composer dump-autoload -o

7. 慢查询 / N+1

// 错误示例
foreach ($users as $u) {
    $u->posts; // 每次查一次
}

✅ 用:

User::with('posts')->get();

三、系统层面问题

8. 内存不足 → 开始 Swap

free -h
swapon --show

✅ 如果 swap 频繁使用,PHP 会“假死”。


9. PHP 版本过旧

Ubuntu 20.04 默认 PHP 7.4
Ubuntu 22.04 默认 PHP 8.1

✅ 升级明显更快:

sudo add-apt-repository ppa:ondrej/php

10. DNS 解析卡住

PHP 里 gethostbyname()、邮件、curl 很慢。

✅ 检查:

nslookup example.com

四、快速自检清单(1 分钟)

php -v
php -i | grep opcache
systemctl status php*-fpm
free -h
iotop

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

你可以告诉我:

  1. Ubuntu 版本
  2. PHP 版本
  3. Web 服务(Nginx / Apache)
  4. 是否 Laravel / ThinkPHP / 原生
  5. 慢的是 CLI 还是网页

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

0 踩