温馨提示×

Ubuntu下PHP运行慢怎么解

小樊
41
2026-08-24 10:36:05
栏目: 编程语言

在 Ubuntu 下 PHP 运行慢,一般不是单一原因,而是环境、配置、代码、IO、数据库等多个因素叠加。下面按最常见 → 进阶 → 少见的顺序给你一套排查与优化方案。


一、先确认「慢在哪里」(非常关键)

1️⃣ 看是 PHP 慢,还是整站慢

  • 静态文件(图片、CSS、JS)也慢 → 网络 / Nginx / 服务器资源问题
  • 只有 PHP 页面慢 → PHP / 数据库 / 代码问题

2️⃣ 用简单脚本测试 PHP 本身

<?php
phpinfo();

如果这也慢(>1 秒),说明是 PHP 运行环境问题。


二、最常见原因 & 解决办法(90% 都在这)

✅ 1. PHP 没开 OPCache(最常见)

检查:

php -i | grep opcache

如果没有开启:

sudo apt install php-opcache

配置(php.ini):

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0

✅ 开启后,PHP 性能通常提升 2~5 倍


✅ 2. 使用了 php-fpm 但配置不合理

查看 PHP 版本

php -v

常见调整(www.conf)

路径示例:

/etc/php/8.1/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

如果是高并发网站,pm.max_children 太小会严重卡顿

重启:

sudo systemctl restart php8.1-fpm

✅ 3. Nginx / Apache 配置问题

Nginx 常见错误

fastcgi_pass unix:/run/php/php8.1-fpm.sock;

✅ 一定要用 unix socket,不要用 TCP(127.0.0.1:9000)


✅ 4. DNS 或 gethostbyname() 导致卡死(非常隐蔽)

现象:

  • 本地访问快
  • 服务器访问慢
  • 每次 PHP 执行都卡 1~2 秒

原因:

file_get_contents()
curl
mail()

✅ 解决方法:

; php.ini
disable_functions = getmxrr,gethostbyname

或确保 /etc/resolv.conf 正常


三、数据库导致的 PHP 慢(非常常见)

✅ 1. MySQL 慢查询

SHOW VARIABLES LIKE 'slow_query_log';

开启慢查询日志:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

✅ 90% 的 PHP 慢是 SQL 慢


✅ 2. 没有索引

EXPLAIN SELECT * FROM user WHERE email='xx';

四、代码层面的优化

✅ 1. 避免每次都 composer dump-autoload

✅ 2. 减少 file_exists() / is_dir() 滥用

✅ 3. 关闭 Xdebug(生产环境)

php -i | grep xdebug

✅ 生产环境一定要关:

sudo phpdismod xdebug

五、系统资源问题

✅ 1. 查看 CPU / 内存

top
htop
free -h

✅ 2. 磁盘 IO 过高

iostat -x 1

如果是云服务器:

  • 低配机器(1C1G)跑 PHP + MySQL → 必慢

六、如果是 Laravel / ThinkPHP 等框架

Laravel 优化(必做)

php artisan config:cache
php artisan route:cache
php artisan view:cache

七、快速自检清单(照着做)

✅ 是否开启 OPCache
✅ 是否关闭 Xdebug
✅ PHP-FPM 参数是否合理
✅ 是否使用 Unix Socket
✅ 是否有慢 SQL
✅ 服务器配置是否过低


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

你可以直接贴出:

  1. Ubuntu 版本
  2. PHP 版本
  3. Nginx / Apache
  4. 是否用 Laravel / ThinkPHP
  5. 是「首次访问慢」还是「一直慢」

我可以给你针对你服务器的一行一行优化方案

0