在 Linux 上运行 Laravel 变慢,通常不是“Laravel 本身慢”,而是环境或配置问题。下面按最常见原因 → 排查方法 → 解决建议来说明。
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
php artisan serve(开发服务器)artisan serve 只适合本地调试,性能极差。
❌ 慢:
php artisan serve
✅ 正确:
检查:
php artisan route:list
php artisan config:cache
优化:
php artisan config:cache
php artisan route:cache
php artisan view:cache
⚠️ 注意:改配置后要重新 cache
Laravel 大量读文件(bootstrap、vendor)
常见慢点:
✅ 解决:
.env 中:
APP_DEBUG=true
LOG_LEVEL=debug
生产环境应:
APP_DEBUG=false
LOG_LEVEL=error
慢查询比代码更致命。
检查慢查询:
SHOW PROCESSLIST;
加索引:
Schema::table('orders', function ($table) {
$table->index('user_id');
});
错误示例:
$users = User::all();
foreach ($users as $user) {
$user->posts; // 每次都查一次
}
✅ 解决:
User::with('posts')->get();
www.conf:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
太少会导致排队。
错误权限会让 Laravel 反复写 log / cache 失败。
推荐:
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage
time curl http://localhost
APP_DEBUG=true
用浏览器看:
clockworklaravel-debugbarblackfireLinux 上 Laravel 慢,90% 是因为:
- 没开 OPcache
- 用 artisan serve
- 磁盘 IO 慢
- 没做 route/config 缓存
- 数据库没索引 / N+1
如果你愿意,可以告诉我:
我可以给你针对性的优化方案。