Debian上提升 Laravel 性能的实操清单
一 基础环境优化
- 将应用切到生产环境并关闭调试:设置 APP_ENV=production、APP_DEBUG=false,避免调试开销与信息泄露。
- 启用并正确配置 OPcache(生产建议关闭时间戳检查):
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0
opcache.revalidate_freq=60
注:如用 PHP 8.0+ JIT,可开启 tracing/JIT 进一步提升性能。
- 优化 PHP-FPM(以 Debian 常见路径为例):编辑 /etc/php/{version}/fpm/pool.d/www.conf
- 进程模型:内存充足可用 pm=static,按 CPU 核数×4 设置 pm.max_children;波动较大用 pm=dynamic 并合理设置 pm.start_servers / pm.min_spare_servers / pm.max_spare_servers。
- 稳定性:设置 pm.max_requests=500~1000 定期回收进程,缓解内存泄漏累积。
- 重启生效:systemctl restart php{version}-fpm。
- 配置 Nginx 反向代理 PHP:
- 将请求转发至 PHP-FPM:fastcgi_pass unix:/run/php/php{version}-fpm.sock;
- 正确设置脚本路径:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- 重载:nginx -t && systemctl reload nginx。
- 提升系统资源与网络:
- 文件描述符:在 /etc/security/limits.conf 为运行用户设置 nofile 65535,并使用 ulimit -n 65535 验证。
- 内核网络(/etc/sysctl.conf):
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
执行 sysctl -p 生效。
二 Laravel 应用层优化
- 配置与路由缓存:
php artisan config:cache
php artisan route:cache
php artisan view:cache
提示:开发环境不要启用,变更不生效。
- Composer 优化:
composer install --optimize-autoloader --no-dev
- 缓存策略:优先使用 Redis/Memcached 作为缓存与 Session 驱动(.env):
CACHE_DRIVER=redis
SESSION_DRIVER=redis
对热点数据使用 Cache::remember 减少重复查询。
- 队列与异步:将耗时任务(邮件、导出、图片处理)放入队列,建议驱动 redis:
QUEUE_CONNECTION=redis
部署常驻 queue:work --queue=high,default --tries=3 --sleep=3 或使用 Horizon 监控与伸缩。
- 数据库优化:
- 索引与查询:为高频查询字段建立索引,避免 N+1 使用 with()/withCount(),必要时用 EXPLAIN 分析执行计划。
- 连接管理:高并发可引入 PgBouncer(PostgreSQL)/ProxySQL(MySQL) 做连接池,降低握手与连接开销。
三 进阶加速方案
- Laravel Octane:基于 FrankenPHP/Swoole/RoadRunner 的长生命周期进程模型,显著降低框架重复引导开销。
安装与启动:
composer require laravel/octane
php artisan octane:install --server=frankenphp
php artisan octane:start
配合 Nginx 将请求代理到 Octane 服务监听地址。
- FrankenPHP:内置 Caddy 的现代 PHP 应用服务器,具备自动 HTTPS、静态资源高效服务与并发能力,适合容器化与边缘场景。
- 可选方案(进阶):基于 Swoole 的社区方案(如 Stone)可进一步提升常驻内存场景性能,但需评估与现有代码/扩展的兼容性。
四 监控与持续优化
- 性能剖析与调试:开发/预发环境可用 Laravel Debugbar、Laravel Telescope 定位慢查询、慢任务与异常调用。
- 线上监控:接入 New Relic/Datadog 等 APM,关注 响应时间、吞吐、错误率、队列积压、慢查询 等关键指标,结合指标调优 OPcache/FPM/Nginx/数据库 参数与代码路径。