Laravel项目在Ubuntu上如何进行性能调优
导读:Ubuntu 上 Laravel 性能调优实操清单 一 基础环境优化 启用并正确配置 PHP OPcache(生产环境建议关闭时间戳检查,脚本更新通过部署流程重启 FPM 生效): 配置示例(php.ini): opcache.ena...
Ubuntu 上 Laravel 性能调优实操清单
一 基础环境优化
- 启用并正确配置 PHP OPcache(生产环境建议关闭时间戳检查,脚本更新通过部署流程重启 FPM 生效):
- 配置示例(php.ini):
- opcache.enable=1
- opcache.memory_consumption=256
- opcache.validate_timestamps=0
- opcache.max_accelerated_files=10000
- 重启服务:
sudo systemctl restart php{ version} -fpm
- 配置示例(php.ini):
- 使用 PHP-FPM + Nginx 替代 mod_php/Apache,减少进程开销、提升并发:
- Nginx 关键配置片段:
fastcgi_pass unix:/run/php/php{ version} -fpm.sock;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- 检查并重载:
sudo nginx -t & & sudo systemctl reload nginx
- Nginx 关键配置片段:
- 调整 PHP-FPM 进程池(/etc/php/{
version}
/fpm/pool.d/www.conf):
- 模式选择:
- static:设置
pm = static,pm.max_children ≈ CPU 核心数 × 4 - dynamic:设置
pm.start_servers、pm.min_spare_servers、pm.max_spare_servers以适配流量波动
- static:设置
- 通用:
pm.max_requests=**500~1000**(防内存泄漏累积)
- 模式选择:
- 系统层面提升文件句柄与网络承载能力(/etc/security/limits.conf 与 /etc/sysctl.conf):
- limits.conf:
* soft nofile 655360* hard nofile 655360
- sysctl.conf(按需微调):
net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_fin_timeout=30net.ipv4.tcp_keepalive_time=1200net.ipv4.ip_local_port_range=10240 60999- 应用:
sudo sysctl -p
- limits.conf:
二 Laravel 应用层优化
- 环境与配置:
.env中设置:APP_ENV=production、APP_DEBUG=false- 生成优化缓存:
php artisan config:cachephp artisan route:cachephp artisan view:cachecomposer dump-autoload --optimize
- 缓存与队列:
- 使用 Redis 作为缓存与会话驱动(需安装 predis/predis):
.env:CACHE_DRIVER=redis、SESSION_DRIVER=redis、REDIS_HOST=127.0.0.1、REDIS_PORT=6379- 示例:
composer require predis/predis
- 将耗时任务(邮件、导入、图片处理等)放入队列,部署常驻 worker:
php artisan queue:work --daemon --tries=3
- 使用 Redis 作为缓存与会话驱动(需安装 predis/predis):
- 数据库与 Eloquent:
- 为高频查询字段建立合适索引,避免全表扫描
- 解决 N+1 查询:使用
with('relation')预加载关联 - 对热点数据使用缓存:如
Cache::remember('key', 3600, fn() => ...)
三 并发与长驻进程方案
- 使用 Laravel Octane(基于 Swoole/RoadRunner,显著减少框架重复启动开销):
- 安装与启动:
composer require laravel/octanephp artisan octane:installphp artisan octane:start --workers=4 --task-workers=2
- 注意:Octane 下部分文件/配置变更需重启 Worker 才生效
- 安装与启动:
- 队列与异步任务:
- 选择 Redis 队列,配置失败重试与超时:
- 队列配置示例:
'retry_after' => 90
- 队列配置示例:
- 多 Worker 并行消费:
php artisan queue:work --queue=high,default --tries=3 --timeout=90
- 选择 Redis 队列,配置失败重试与超时:
四 前端与传输层优化
- 资源构建与压缩:
- 使用 Laravel Mix 生成生产资源:
npm run production - 启用 Gzip/Brotli 压缩(Nginx 层)
- 使用 Laravel Mix 生成生产资源:
- 传输与分发:
- 启用 HTTP/2(Nginx 配置)
- 静态资源使用 CDN 加速与缓存策略(Cache-Control、版本化文件名)
五 监控与迭代
- 开发/预发环境接入 Laravel Debugbar 定位慢查询与 N+1,生产环境务必移除
- 建立性能基线(如 TTFB、95/99 延迟、QPS、错误率),每次变更后回归对比
- 结合业务特点持续做索引优化、缓存粒度调整与队列拆分(高优/低优队列)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel项目在Ubuntu上如何进行性能调优
本文地址: https://pptw.com/jishu/775673.html
