CentOS 下 Laravel 性能优化实操清单
一 快速定位瓶颈
- 确认是否首次访问慢、重复访问是否依然慢:首次慢多与路由/配置/视图编译有关,重复慢更可能是数据库或外部 API。
- 开启并查看Laravel Log与PHP-FPM 慢日志,定位长时请求与异常堆栈。
- 使用Laravel Telescope / Debugbar或New Relic / Blackfire做性能剖析,找出最耗时调用(SQL、外部 HTTP、队列、缓存命中率等)。
- 检查数据库慢查询日志,对高频与全表扫描语句建立合适索引并优化 SQL。
- 观察Nginx/Apache 访问日志与状态码,排除网络抖动、重定向与静态资源 404 等问题。
- 在高峰期用top/htop、iostat、vmstat排查 CPU、I/O、内存与连接数瓶颈。
二 PHP 与 OPcache 优化
- 确保安装并启用OPcache,在 php.ini 使用推荐值(示例):
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
说明:开启后可显著减少 PHP 脚本重复编译开销。
- 适度提升memory_limit(如256M–512M)与max_execution_time,避免大请求被中断。
- 在生产环境执行缓存类 Artisan 命令:
php artisan config:cache
php artisan route:cache
php artisan view:cache
说明:减少文件 I/O 与框架启动成本。
- 保持PHP 与 Laravel为较新稳定版本,获取性能修复与改进。
三 数据库与队列优化
- 为高频查询条件与排序字段建立索引,并用EXPLAIN分析执行计划,消除全表扫描与临时表。
- 解决N+1 查询:在 Eloquent 中使用Eager Loading(with)预加载关联数据。
- 避免 SELECT *,仅查询必要字段;大数据列表使用分页与游标分页降低单次传输量。
- 合理使用查询缓存(Cache::remember)与结果缓存,热点数据设置合理 TTL。
- 将耗时任务(邮件、图片处理、导入导出、第三方回调)放入队列,用Supervisor守护队列工作进程,必要时使用Laravel Horizon管理 Redis 队列。
- 定期审查慢查询并优化索引/语句,避免锁等待与长事务。
四 Web 服务器与网络层优化
- 优先使用Nginx + PHP-FPM,按内存与并发调优 PHP-FPM 进程模型(如合理设置pm.max_children、pm.start_servers等)。
- 启用Gzip 压缩减少传输体积;开启HTTP/2提升多资源并行加载能力。
- 配置KeepAlive与合适的缓存控制头(如静态资源长 Cache + 文件名哈希),提升浏览器复用率。
- 将静态资源(CSS/JS/图片/字体)托管到 CDN,降低源站带宽与时延。
- 检查SSL/TLS配置与证书链,避免握手与重定向带来的额外耗时。
五 缓存策略与代码层面优化
- 使用Redis/Memcached作为缓存驱动,缓存配置、路由、视图、字典/配置项、热点查询结果等。
- 合理使用HTTP 缓存(如 ETag、Cache-Control)与浏览器缓存,对接口层可加Cache-Control: s-maxage。
- 减少视图逻辑与嵌套层级,善用Blade 的 @include/@extends与组件化,避免复杂运算在模板中执行。
- 前端资源使用代码分割与压缩合并(如 Laravel Mix/Webpack),减少首屏体积与请求数。
- 持续更新框架与依赖包,及时获得性能与安全修复。