温馨提示×

ubuntu php为何运行慢

小樊
38
2026-09-01 10:58:23
栏目: 编程语言

在 Ubuntu 上 PHP 运行慢,通常不是“PHP 本身慢”,而是环境配置、资源、或代码层面的问题。下面按常见原因 → 排查方法 → 解决建议给你梳理一下。


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

1️⃣ 没有启用 OPcache(最常见)

PHP 每次请求都重新编译代码,会非常慢。

检查:

php -m | grep opcache

如果没有:

sudo apt install php-opcache

php.ini 中确保:

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

重启:

sudo systemctl restart apache2   # 或 php-fpm

2️⃣ 使用了 php-fpm 但配置不合理

如果是 Nginx + PHP-FPM:

ps aux | grep php-fpm

常见问题:

  • pm.max_children 太小
  • pm = static/dynamic 配错

示例优化(4核8G):

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

3️⃣ DNS 解析慢(非常隐蔽)

PHP 中如果有:

  • mail()
  • gethostbyname()
  • 某些框架初始化

可能会卡在 DNS。

测试:

time php -r "gethostbyname('localhost');"

解决:

  • /etc/hosts 确保有:
127.0.0.1 localhost
  • 禁用 IPv6(有时有用)

4️⃣ 硬盘 IO 慢(云服务器常见)

特别是:

  • 低配云服务器
  • 机械硬盘
  • 大量日志写入

检查:

iostat -x 1

优化:

  • 关闭 Xdebug
  • 减少日志级别
  • 使用 SSD

二、开发环境相关

5️⃣ Xdebug 没关(开发机必查)

Xdebug 会严重拖慢 PHP

php -m | grep xdebug

如果是生产环境:

sudo phpdismod xdebug
sudo systemctl restart apache2

6️⃣ Composer / 框架自动加载未优化

Laravel / Symfony 等:

composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache

三、系统层面

7️⃣ PHP 版本太老

Ubuntu 自带可能还是 PHP 7.4 / 8.1

建议:

php -v

升级到 8.2 / 8.3 通常提升明显。


8️⃣ 内存不足导致 swap

free -h

如果频繁使用 swap:

  • 增加内存
  • 或减少 PHP 进程数

四、快速自检清单 ✅

你可以依次执行:

php -v
php -m | grep opcache
php -m | grep xdebug
free -h
top

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

你可以告诉我:

  1. Ubuntu 版本(22.04 / 20.04?)
  2. Web 服务(Apache / Nginx?)
  3. PHP 版本
  4. 网站慢还是命令行 php 慢
  5. 用的框架(Laravel / WordPress / 原生?)

我可以直接给你一套针对性优化方案

0