在 Linux 环境下优化 Laravel 性能,可以从 PHP、Laravel 自身、数据库、服务器、缓存、运维 多个层面来做。下面是一套比较系统的优化方案(按重要性排序)。
APP_ENV=production
APP_DEBUG=false
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
部署后代码变更一定要重新执行
cache命令
composer install --optimize-autoloader --no-dev
composer dump-autoload -o
; php.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0 ; 生产环境
opcache.revalidate_freq=60
# nginx.conf
worker_processes auto;
worker_connections 10240;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
gzip on;
gzip_types text/css application/javascript application/json;
slow_query_log = 1
long_query_time = 1
// ❌ 错误
$users = User::all();
foreach ($users as $user) {
$user->posts;
}
// ✅ 正确
$users = User::with('posts')->get();
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
sudo apt install redis-server
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
php artisan queue:work --daemon
使用 Supervisor 管理队列:
[program:laravel-worker]
command=php /var/www/artisan queue:work --daemon
autostart=true
autorestart=true
npm run build
location ~* \.(js|css|png|jpg)$ {
expires 30d;
}
ulimit -n 65535
sysctl -w net.core.somaxconn=65535
php artisan route:list(路由数量)debugbar(开发)Blackfire / Tideways(性能分析)htop, iostat, vmstat✅ 立竿见影
✅ 中期
✅ 长期
如果你愿意,可以告诉我:
我可以给你一套针对性的优化方案。