温馨提示×

ubuntu php为什么慢

小樊
36
2026-10-28 04:17:49
栏目: 编程语言

在 Ubuntu 上 PHP 运行“慢”通常不是单一原因,而是环境配置、代码、系统资源或外部依赖共同导致的。下面按最常见 → 较少见的顺序帮你系统排查。


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

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

如果你用的是 Apache + mod_php 或 PHP-CGI,性能通常不如 PHP-FPM。

✅ 推荐:

  • Nginx + PHP-FPM
  • Apache + PHP-FPM(event MPM)

检查:

php -v
ps aux | grep php-fpm

2. PHP-FPM 进程数太少

默认配置在低并发下就会卡。

查看:

/etc/php/*/fpm/pool.d/www.conf

关键参数:

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

如果 max_children 太小,请求会排队。


3. OPcache 没开(非常关键)

没开 OPcache 的 PHP 会慢 2–5 倍

检查:

php -m | grep opcache

开启:

; /etc/php/*/fpm/php.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60

重启:

systemctl restart php*-fpm

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

Ubuntu 云服务器(尤其是低配):

  • 机械盘
  • 低 IOPS 云盘
  • /tmp 在慢盘

检查:

iostat -x 1

建议:

  • 使用 SSD
  • /tmp 放内存盘(tmpfs)

二、代码层面问题

5. 大量 file_exists / require_once

老框架(CI / 老 Laravel)容易这样。

工具:

php -d xdebug.profiler_enable=1

或:

  • Blackfire
  • Tideways
  • xhprof

6. 数据库慢(不是 PHP 慢)

常见误判:PHP 慢 = 实际 SQL 慢

检查:

slow query log
EXPLAIN SELECT ...

7. 外部请求(HTTP / API / SMTP)

file_get_contents("https://api.xxx.com");

没超时控制会直接卡死。

✅ 使用:

  • curl + timeout
  • 异步队列

三、Ubuntu 特有原因

8. DNS 解析慢(非常常见)

PHP 或 DB 连接时做反向 DNS。

解决:

; php.ini
dns.get_record_cache=1

或:

/etc/hosts
127.0.0.1 localhost

9. 系统资源不足

free -h
top

常见问题:

  • SWAP 频繁
  • OOM
  • CPU 被其他进程占满

10. PHP 版本太老

PHP 5.6 / 7.0 明显慢。

✅ 推荐:

  • PHP 8.1+
  • PHP 8.3(最新稳定)

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

php -v
php -m | grep opcache
systemctl status php*-fpm
iostat -x 1

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

你可以告诉我:

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

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

0 踩