温馨提示×

ubuntu php为何运行缓慢

小樊
46
2026-10-07 07:10:05
栏目: 编程语言

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


一、最常见原因(80% 问题在这里)

1. PHP 运行模式不对(非常重要)

不同模式性能差异巨大:

模式 性能 说明
mod_php 中 Apache 内置,已不推荐
php-fpm + Nginx ✅ 最佳 生产环境首选
CGI ❌ 极慢 每次请求都启动进程

✅ 推荐:

php-fpm (Nginx / Apache)

检查:

php -v
ps aux | grep php-fpm

2. 没有开启 OPcache(性能杀手)

未开启 OPcache,PHP 每次都重新编译脚本

开启方法:

sudo apt install php-opcache

编辑:

/etc/php/*/fpm/php.ini

确保:

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

重启:

sudo systemctl restart php-fpm

✅ 开启后通常 速度提升 2–10 倍


3. DNS 解析慢(非常隐蔽)

PHP 中常见:

  • gethostbyname()
  • mail()
  • curl 访问域名

Ubuntu 默认可能使用 systemd-resolved,很慢。

✅ 解决:

sudo nano /etc/resolv.conf

改为:

nameserver 8.8.8.8
nameserver 1.1.1.1

二、代码层面问题

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

用:

EXPLAIN SELECT ...

常见问题:

  • 没有索引
  • N+1 查询
  • 每次请求都连数据库

✅ 解决:

  • 加索引
  • 使用连接池 / 持久连接
  • 加缓存(Redis / Memcached)

5. 文件 I/O 过多

例如:

  • 每次请求读大量文件
  • 写日志过多
  • scandir() 大目录

✅ 使用:

  • 缓存
  • 合并文件

6. 使用 xdebug(开发误开)

zend_extension=xdebug

⚠️ 生产环境必须关闭

检查:

php -m | grep xdebug

三、系统资源问题

7. 内存 / CPU 不足

htop
free -h

PHP-FPM 配置过小:

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

示例:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10

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

iostat -x 1

✅ 解决:

  • 使用 SSD
  • 减少日志写入

四、网络与外部依赖

9. 调用外部 API 慢

  • 第三方接口超时
  • 未设置 timeout

✅ 设置:

curl_setopt($ch, CURLOPT_TIMEOUT, 3);

10. HTTPS / TLS 握手慢

  • 多次 HTTPS 请求
  • 未复用连接

五、快速自查清单 ✅

php -m | grep opcache
php -m | grep xdebug
ps aux | grep php-fpm
htop
df -h
cat /etc/resolv.conf

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

你可以告诉我:

  1. Ubuntu 版本
  2. PHP 版本
  3. Web 服务(Nginx / Apache)
  4. 是网站慢,还是 CLI 慢
  5. 是否有数据库 / Redis

我可以直接给你最优配置方案。

0 踩