Laravel Octane通过常驻内存、预热加载、精简中间件、配置路由缓存及调优并发参数,显著降低启动开销与响应延迟。需安装Swoole/RoadRunner,执行octane:install与preload,禁用调试组件,启用config:cache和route:cache,并按CPU核心数设置workers与协程数。

如果您正在使用Laravel框架并希望显著缩短应用启动时间与请求响应延迟,则可能是由于传统FPM模式下每次请求都需重新加载框架与配置。以下是针对Laravel Octane进行性能优化的具体操作步骤:
一、启用Octane并切换至Swoole或RoadRunner运行时
Octane通过常驻内存的服务器进程避免重复加载Laravel内核,大幅减少请求初始化开销。需明确选择高性能运行时并完成基础部署。
1、确保已安装PHP扩展:Swoole(≥v4.8)或RoadRunner(需rr二进制文件)。
2、执行Composer命令安装Octane:composer require laravel/octane。
3、发布配置文件:php artisan octane:install,该命令将自动注册服务提供者并生成config/octane.php。
4、根据目标运行时执行对应启动命令:使用Swoole时运行php artisan octane:start --server=swoole;使用RoadRunner时运行php artisan octane:start --server=roadrunner。
二、预热应用状态与类映射
Octane启动时默认不加载全部应用状态,预热可提前实例化关键服务、解析路由与绑定容器实例,消除首次请求延迟。
1、在config/octane.php中设置warmup数组,添加需预加载的URL路径,例如['/health', '/api/status']。
2、启用类映射优化:运行composer dump-autoload --classmap-authoritative --no-dev,强制Composer使用权威类映射,跳过PSR-4动态查找。
3、在Octane配置中启用opcache.preload支持:确认php.ini中已启用OPcache,并设置opcache.preload=/path/to/your/app/storage/framework/octane/preload.php,再执行php artisan octane:preload生成预加载脚本。
三、禁用开发环境特性并精简中间件栈
开发专用中间件(如Telescope、Debugbar)及未授权的全局中间件会在每次请求中执行额外逻辑,增加CPU与内存负担。
1、检查app/Http/Kernel.php中的$middleware、$middlewareGroups和$routeMiddleware,移除非生产必需项,例如App\Http\Middleware\TrustHosts::class在反向代理后应替换为更轻量的App\Http\Middleware\TrustProxies::class。
2、在.env中确认APP_DEBUG=false且TELESCOPE_ENABLED=false,防止调试工具注入监听器。
3、对高频API路由单独定义中间件组,避免web组中Session、CSRF等开销较大的中间件被误用于无状态接口。
四、优化配置与路由缓存机制
Octane虽常驻内存,但仍会按需解析配置与路由;显式缓存可固化结构,消除运行时解析成本。
1、执行php artisan config:cache,将所有配置合并为单一PHP文件,供Octane直接include。
2、执行php artisan route:cache,生成优化后的路由集合,跳过routes/*.php文件的动态加载与编译。
3、若使用自定义配置文件(如config/services.php),确保其内容不含闭包或运行时依赖,否则缓存将失败。
五、调整内存与并发参数以匹配硬件资源
Octane默认配置面向通用场景,需根据服务器CPU核心数、可用内存及预期QPS调整进程与协程参数,防止资源争抢或闲置。
1、编辑config/octane.php,将workers设为CPU逻辑核心数(如8核设为8),避免进程过多导致上下文切换开销。
2、对Swoole运行时,将swoole.options.coroutine.max_coroutine调高至5000–10000,提升高并发下协程调度效率。
3、设置max_requests为0(不限制)或较高值(如10000),延长worker生命周期,减少频繁重启带来的重建开销。











