温馨提示×

linux laravel为何慢

小樊
40
2026-09-22 10:42:37
栏目: 智能运维

在 Linux 上运行 Laravel 慢,通常不是 Laravel 本身的问题,而是环境、配置或使用方式导致的。下面按最常见原因 → 排查方法 → 解决建议来说明。


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

1️⃣ 没有开 OPcache(最重要)

Laravel 是 PHP 框架,没开 OPcache 会非常慢。

✅ 检查:

php -m | grep opcache

✅ 正确配置(php.ini):

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.revalidate_freq=0
opcache.validate_timestamps=0  ; 生产环境

✅ 重启:

sudo systemctl restart php-fpm

2️⃣ 使用了 php artisan serve

这是开发服务器,性能极差。

❌ 慢:

php artisan serve

✅ 正确做法:

  • Nginx + PHP-FPM
  • 或 Laravel Octane(Swoole / RoadRunner)

3️⃣ 每次请求都加载太多 Service Provider

检查:

php artisan route:list
php artisan config:cache

✅ 生产环境必须:

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

4️⃣ 磁盘 IO 慢(尤其是虚拟机 / WSL)

  • 虚拟机共享目录
  • WSL1
  • HDD 硬盘

✅ 建议:

  • 用 WSL2
  • 项目放在 Linux 文件系统内
  • 不要放 /mnt/c

5️⃣ 调试工具全开

以下会严重拖慢:

  • debug=true
  • telescope
  • clockwork
  • xdebug

✅ 生产必须:

APP_DEBUG=false

二、数据库相关慢

6️⃣ N+1 查询

常见 Laravel 性能杀手。

❌ 慢:

$users = User::all();
foreach ($users as $user) {
    $user->posts;
}

✅ 正确:

User::with('posts')->get();

✅ 检测:

php artisan telescope:watch

7️⃣ 没加索引 / 查询慢

EXPLAIN SELECT * FROM orders WHERE user_id = 1;

三、Linux 环境问题

8️⃣ PHP-FPM 配置不合理

pm = dynamic
pm.max_children = 50

9️⃣ 文件权限问题

sudo chown -R www-data:www-data storage bootstrap/cache

四、如何快速判断“慢在哪”

1️⃣ 看响应时间

time curl http://localhost

2️⃣ 看 Laravel 日志

storage/logs/laravel.log

3️⃣ 用 Debugbar

composer require barryvdh/laravel-debugbar --dev

五、典型“正常 vs 慢”对比

情况 响应时间
开 OPcache + FPM 20–80ms
没 OPcache 300ms+
artisan serve 500ms+
WSL1 + /mnt 1s+

六、如果你愿意

你可以告诉我:

  • Linux 发行版(Ubuntu / CentOS?)
  • PHP 版本
  • 是否用 Docker / WSL
  • 是本地慢还是线上慢

我可以直接帮你精准定位并给一份优化配置。

0 踩