本文面向 Laravel 10 的团队,目标是在零侵入或低侵入的前提下获得稳态吞吐与尾延迟优化。所有命令与参数均可在开发/生产环境按步骤验证,并附回归建议。
## 环境前提
- PHP 8.2/8.3 与 Opcache(参考同分类文章的 `php.ini`)。
- 缓存与队列:Redis 6/7(`phpredis` 或 `predis` 任一)。
- Laravel 10(`framework` v10.x)。
## Redis 缓存与会话
`.env` 关键项:
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
`config/cache.php`:确保 `redis` store 配置正确;生产环境建议区分缓存与会话 db。
验证:
php artisan tinker --execute="cache(['k'=>'v'], 60); cache('k');"
## 路由与配置缓存
命令:
php artisan route:cache
php artisan config:cache
php artisan view:cache
注意:路由缓存要求闭包路由改为控制器;变更后需重新生成缓存。
验证与回滚:
php artisan route:clear
php artisan config:clear
php artisan view:clear
## 队列与 Horizon(可视化监控)
安装与运行:
composer require laravel/horizon
php artisan horizon:install
php artisan horizon
`config/horizon.php`:根据并发与作业耗时调整 `supervisors` 的 `maxProcesses` 与 `balance` 策略。
验证:投递一个耗时任务并观察处理速率与失败重试。
## Octane(Swoole/RoadRunner)
composer require laravel/octane
php artisan octane:install
php artisan octane:start --server=swoole --workers=8 --task-workers=8
适用场景:CPU 密集/高并发 I/O;与 FPM 相比可显著降低冷启动与重复初始化成本。务必确认扩展安装与兼容性(`ext-swoole`)。
## 生产发布与 Opcache 协同
- 将 `opcache.validate_timestamps=0` 与发布流程绑定,在流量切换后执行 FPM reload 或 `opcache_reset()`。
- Laravel 的 `compiled.php` 与缓存命令相互配合,减少文件扫描与解析成本。
## 压测与监控建议
- 使用 `wrk`/`k6` 压测关键接口 60–120 秒,记录 `RPS` 与 `p95/p99`。
- 采集 `Redis INFO` 与 Horizon 面板数据对比优化前后效果。
- Octane 场景下对比 FPM 稳态 CPU 与内存占用。
## 注意事项
- 路由缓存前需移除闭包路由;避免在缓存生成后修改 `.env` 导致配置不一致。
- 队列的幂等性与去重设计需在业务层保障,避免重复消费导致数据问题。
- Octane 下的单例与静态状态需确保请求隔离,避免数据污染。
## 相关文章(同分类热门)
- [PHP 8 性能优化与 Opcache 与 FPM 调优:生产可验证实践指南](./PHP 8 性能优化与 Opcache 与 FPM 调优:生产可验证实践指南.md)
- [Composer 2 与自动加载优化:PSR-4、Classmap 与 Opcache 结合实战](./Composer 2 与自动加载优化:PSR-4、Classmap 与 Opcache 结合实战.md)
## 结语
通过缓存与编译资产的协同、队列与 Octane 的合理使用,Laravel 10 能在现实生产环境实现稳定的吞吐与尾延迟优化。将上述步骤纳入发布与回归流程,建立可持续的性能基线。

发表评论 取消回复