在 Linux 环境下优化 Laravel 应用,通常可以从 服务器环境、PHP、Laravel 配置、数据库、缓存、队列、代码层面 几个方向入手。下面是一份比较系统、可落地的优化清单。
mod_php编辑 www.conf:
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
根据内存调整(pm.max_children ≈ 内存 / 单个PHP进程)
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
.env
APP_DEBUG=false
APP_ENV=production
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
.env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
Cache::remember('users', 600, fn () => User::all());
where / order by / join 字段加索引ALTER TABLE users ADD INDEX (email);
User::with('posts')->get();
User::paginate(20);
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
dispatch(new SendEmailJob($user));
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work --sleep=3 --tries=3
numprocs=4
npm run build
gzip on;
gzip_types text/css application/javascript;
.env
LOG_LEVEL=error
logrotate
APP_DEBUG=truephp artisan optimize
php artisan config:cache
php artisan route:cache
php artisan view:cache
composer dump-autoload -o
如果你愿意,可以告诉我:
我可以给你一套针对性的优化方案。