温馨提示×

ubuntu php为何慢

小樊
37
2026-09-16 13:23:06
栏目: 编程语言

在 Ubuntu 上 PHP 运行“慢”的原因很多,通常不是单一问题。下面按常见原因 → 排查方法 → 解决建议来说明。


一、最常见原因

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

  • php -v 很快,但网页慢 → Web 请求没走 PHP-FPM
  • Apache 用了 mod_phpCGI,而不是 php-fpm

✅ 推荐方案:

sudo apt install php-fpm

Nginx 必须走 php-fpm,Apache 建议:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm

2. OPcache 没开(非常常见)

PHP 每次都重新编译代码 → 慢

检查:

php -i | grep opcache

开启(Ubuntu):

sudo phpenmod opcache

/etc/php/8.x/fpm/conf.d/10-opcache.ini

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

3. DNS 解析慢(最容易被忽略)

PHP 或框架中:

  • gethostbyname
  • 邮件发送
  • 第三方 API

如果 DNS 慢,PHP 会卡住

✅ 测试:

time curl https://example.com

✅ 解决:

  • 使用本地 DNS(如 8.8.8.8
  • /etc/resolv.conf 配置正确

4. 数据库慢(MySQL / MariaDB)

PHP 本身不慢,是 SQL 慢

检查:

SHOW PROCESSLIST;

常见原因:

  • 没索引
  • SELECT *
  • N+1 查询

✅ 建议:

  • 加索引
  • EXPLAIN
  • 开启慢查询日志

5. 文件/目录权限问题

Ubuntu 上:

  • www-data 无权限
  • PHP 反复 stat() 文件

✅ 检查:

ps aux | grep php-fpm

✅ 正确权限:

sudo chown -R www-data:www-data /var/www

二、系统层面的原因

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

  • 低配云盘
  • 日志狂写

检查:

iotop
df -h

7. SWAP 被用满

内存不够 → 大量 swap

free -h

✅ 解决:

  • 增加内存
  • 调小 php-fpm 进程数

8. PHP-FPM 进程太少

高并发时排队

/etc/php/8.x/fpm/pool.d/www.conf

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

三、框架相关(Laravel / ThinkPHP 等)

9. 调试模式没关

APP_DEBUG=false

10. 自动加载没优化

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

四、快速自查清单 ✅

php -v
php -m | grep opcache
ps aux | grep php-fpm
free -h
top
iotop

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

你可以补充:

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

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

0