Debian 上 Laravel 项目性能优化实操清单
一 系统层优化
* soft nofile 65535* hard nofile 65535net.core.somaxconn = 65535net.ipv4.tcp_max_syn_backlog = 65535net.ipv4.ip_local_port_range = 1024 65535net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 30sysctl -p 使内核参数生效。/etc/php/7.4/fpm/pool.d/www.conf:
pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35listen = /run/php/php7.4-fpm.socksystemctl restart php7.4-fpmgzip on; gzip_vary on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml;innodb_buffer_pool_size = 1Ginnodb_log_file_size = 256Mmax_connections = 200二 PHP 与 Laravel 运行时优化
opcache.enable=1opcache.enable_cli=1opcache.memory_consumption=512Mopcache.interned_strings_buffer=64Mopcache.max_accelerated_files=10000opcache.revalidate_freq=60opcache.validate_timestamps=0(生产建议关闭,变更代码时再临时开启)opcache.jit=1(PHP 8+,如支持)opcache.jit_buffer_size=256Mphp artisan config:cachephp artisan route:cachecomposer require laravel/octanephp artisan octane:install --server=frankenphpphp artisan octane:startfastcgi_pass 127.0.0.1:9000;(Octane/FrankenPHP 监听端口).env:CACHE_DRIVER=redis、SESSION_DRIVER=redisconfig/cache.php 使用 Redis Store。.env:QUEUE_CONNECTION=redisdispatch() 入队。三 数据库与队列优化
with('relation') 预加载;只查需要的字段 select('id','name');为高频查询字段建立 索引;用 EXPLAIN 分析慢查询。sudo apt-get install supervisor/etc/supervisor/conf.d/laravel-worker.conf:[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work redis --sleep=3 --tries=3 --queue=high,default
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log
supervisorctl reread && supervisorctl update && supervisorctl start laravel-worker:*四 前端与网络层优化
mix.js('resources/js/app.js','public/js').sass('resources/sass/app.scss','public/css').version();五 监控 部署与扩展
composer install --optimize-autoloader --no-dev,必要时清缓存后再平滑切换。