温馨提示×

linux laravel为何运行慢

小樊
37
2026-10-07 03:16:00
栏目: 智能运维

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


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

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

Laravel 是 PHP 框架,没有 OPcache 会慢好几倍。

检查:

php -m | grep opcache

如果没有:

sudo apt install php-opcache

php.ini 推荐配置:

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

重启 PHP:

sudo systemctl restart php-fpm

2️⃣ 使用了 php artisan serve(开发服务器)

artisan serve 只适合本地调试,性能极差。

❌ 慢:

php artisan serve

✅ 正确:

  • Nginx + PHP-FPM
  • Apache + PHP-FPM

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

检查:

php artisan route:list
php artisan config:cache

优化:

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

⚠️ 注意:改配置后要重新 cache


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

Laravel 大量读文件(bootstrap、vendor)

常见慢点:

  • VirtualBox 共享目录
  • 网络磁盘
  • 低性能云硬盘

✅ 解决:

  • 把项目放在本地磁盘
  • 使用 Docker volume 优化
  • 使用 SSD

5️⃣ Debug / 日志级别过高

.env 中:

APP_DEBUG=true
LOG_LEVEL=debug

生产环境应:

APP_DEBUG=false
LOG_LEVEL=error

二、数据库相关(很常见)

6️⃣ 没有数据库索引

慢查询比代码更致命。

检查慢查询:

SHOW PROCESSLIST;

加索引:

Schema::table('orders', function ($table) {
    $table->index('user_id');
});

7️⃣ N+1 查询问题

错误示例:

$users = User::all();
foreach ($users as $user) {
    $user->posts; // 每次都查一次
}

✅ 解决:

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

三、Linux / PHP 配置问题

8️⃣ PHP-FPM 配置不合理

www.conf:

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

太少会导致排队。


9️⃣ 文件权限问题导致反复失败

错误权限会让 Laravel 反复写 log / cache 失败。

推荐:

chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage

四、如何快速定位瓶颈

✅ 看响应时间

time curl http://localhost

✅ 打开 Laravel 调试

APP_DEBUG=true

用浏览器看:

  • 哪个 query 最慢
  • 哪个 middleware 最慢

✅ 使用工具

  • clockwork
  • laravel-debugbar
  • blackfire

五、一句话总结

Linux 上 Laravel 慢,90% 是因为:

  • 没开 OPcache
  • 用 artisan serve
  • 磁盘 IO 慢
  • 没做 route/config 缓存
  • 数据库没索引 / N+1

如果你愿意,可以告诉我:

  • Linux 发行版(Ubuntu / CentOS?)
  • PHP 版本
  • 是否 Docker / 虚拟机
  • 是本地还是服务器

我可以给你针对性的优化方案。

0 踩