在 Linux 环境下,Laravel 运行缓慢通常由配置、环境、代码、资源等多方面因素导致。下面按常见原因 → 排查方法 → 解决建议系统说明。
Laravel 是大型框架,未开启 OPcache 会非常慢。
检查
php -m | grep opcache
php -i | grep opcache.enable
解决(php.ini)
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
重启 PHP:
systemctl restart php-fpm
php artisan serve(开发服务器)artisan serve 不适合生产,性能极差。
✅ 正确方式:
APP_ENV=production
APP_DEBUG=false
❌ APP_DEBUG=true 会:
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
⚠ 修改配置后需重新 cache。
composer install --optimize-autoloader --no-dev
composer dump-autoload -o
例如:
✅ 建议:
导致:
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage
$users = User::all();
foreach ($users as $user) {
$user->posts; // 每条都查一次
}
✅ 解决:
User::with('posts')->get();
慢查询常见原因。
EXPLAIN SELECT * FROM orders WHERE user_id = 1;
✅ 加索引:
Schema::table('orders', function ($table) {
$table->index('user_id');
});
跨网络 DB 会显著增加延迟。
LOG_LEVEL=error
❌ 避免:
LOG_LEVEL=debug
生产环境必须关闭。
TELESCOPE_ENABLED=false
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
太少会导致排队。
htop
free -m
php -m | grep opcache
php artisan config:cache
php artisan route:cache
composer dump-autoload -o
APP_DEBUG=false
数据库 with()
EXPLAIN 慢 SQL
你可以告诉我:
我可以直接帮你定位并给出优化方案。