温馨提示×

为什么ubuntu php运行慢

小樊
49
2026-10-16 03:38:34
栏目: 编程语言

Ubuntu 上 PHP 运行慢,通常不是“Ubuntu 本身慢”,而是环境配置、PHP 版本、运行方式或资源问题导致的。下面按常见原因从高到低给你梳理,并给出排查和优化方法。


一、最常见原因

1. PHP 运行方式不对(FPM / CLI / mod_php)

  • Apache + mod_php:老、慢、占内存
  • Nginx + PHP-FPM(推荐):快很多
  • CLI 执行慢 ≠ Web 慢

✅ 建议:

php -v
ps aux | grep php-fpm

確认是否用了 php-fpm


2. PHP 版本过旧

  • PHP 5.6 / 7.0 明显慢
  • PHP 8.1 / 8.2 / 8.3 性能提升巨大

✅ 查看版本:

php -v

✅ Ubuntu 升级 PHP:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2-fpm

3. OPcache 没开(非常关键)

没开 OPcache,PHP 每次都重新编译,会非常慢。

✅ 检查:

php -i | grep opcache

✅ 开启(php.ini):

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

重启:

sudo systemctl restart php8.2-fpm

4. 磁盘 IO 慢(云服务器/低配机常见)

  • 机械盘
  • 低配云盘(IOPS 低)
  • /var/www 在慢盘

✅ 测试:

dd if=/dev/zero of=test bs=1M count=100

5. DNS 解析慢(CLI 特别明显)

PHP 里用到:

  • gethostbyname()
  • mail()
  • 某些 SDK 默认访问外网

✅ 临时测试:

php -r "echo gethostbyname('example.com');"

✅ 解决:

  • 配置 /etc/resolv.conf
  • 或禁用不必要外网请求

二、Web 环境相关

6. Nginx / Apache 配置不合理

常见问题:

  • FPM 进程太少
  • pm = static 但内存不够
  • 超时设置异常

✅ PHP-FPM 示例(www.conf):

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

7. 调试工具拖慢(Xdebug)

如果你装了 Xdebug 但没关:

  • Web 慢 3–10 倍
  • CLI 更明显

✅ 检查:

php -m | grep xdebug

✅ 生产环境关闭:

xdebug.mode=off

三、代码层面原因

8. 代码本身慢

  • 大量 file_get_contents
  • 循环里查数据库
  • 没用缓存

✅ 简单 profiling:

php -d xdebug.mode=profile script.php

或装:

composer require tideways/php-profiler

9. Composer autoload 没优化

composer dump-autoload -o

四、系统资源问题

10. 内存不足 / Swap

free -h
top

如果频繁 Swap,PHP 会非常慢。


五、快速自查清单 ✅

你可以一条条对照:

  • [ ] 用的是 PHP-FPM 吗?
  • [ ] PHP ≥ 8.1?
  • [ ] OPcache 开了吗?
  • [ ] Xdebug 关了吗?
  • [ ] DNS 正常吗?
  • [ ] 磁盘 IO 正常吗?
  • [ ] FPM 进程够吗?
  • [ ] 代码有性能问题吗?

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

  1. Ubuntu 版本
  2. PHP 版本
  3. Web 服务器(Nginx / Apache)
  4. 是 Web 慢 还是 CLI 慢
  5. 具体哪个操作慢(页面 / 命令 / 脚本)

我可以直接帮你定位到具体原因 + 配置示例。

0 踩