You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Laravel Forge的Worker自动扩缩容方案咨询

Laravel Forge下Laravel Worker自动扩缩容方案

方案一:自定义监控脚本+Supervisor(通用所有队列驱动)

  • 核心逻辑:通过监控队列长度、服务器负载,动态调整Supervisor管理的Worker进程数
  • 具体操作:
    1. 写Shell脚本或Laravel命令,用php artisan queue:size --queue=你的队列名获取实时队列长度
    2. 脚本内设置阈值:比如队列长度>5000时,调用supervisorctl scale laravel-worker=8增加进程;队列长度<100时,调用supervisorctl scale laravel-worker=2减少进程(数值根据业务调整)
    3. 在Laravel Forge的「调度任务」中添加定时任务,每分钟执行一次该脚本
    4. 提前在Forge的Supervisor配置中,确保Worker进程名统一(比如laravel-worker),方便scale命令批量调整

方案二:弹性Worker服务器组(适合大流量波动场景)

  • 核心逻辑:将Worker与Web服务器分离,通过Forge API或监控触发服务器的创建/销毁
  • 具体操作:
    1. 在Forge中创建独立的Worker服务器组,单独部署队列Worker
    2. 编写监控脚本,监控全局队列积压量、服务器CPU负载:当积压量持续高于阈值(如10000且5分钟未下降),调用Forge API创建新的Worker服务器;当负载持续低于阈值(如CPU使用率<20%且10分钟),销毁闲置服务器
    3. 配置Forge的SSH密钥和API权限,确保脚本能正常调用服务器管理接口
    4. 设置最低服务器数量(比如1台),避免低谷时完全停摆

方案三:Laravel Horizon自动缩放(仅Redis队列驱动)

  • 核心逻辑:利用Laravel官方的Horizon工具,内置的自动缩放规则实现Worker动态调整
  • 具体操作:
    1. 在项目中安装Horizon:composer require laravel/horizon
    2. 配置config/horizon.php的生产环境规则,示例:
'environments' => [
    'production' => [
        'default' => [
            'maxProcesses' => 12,
            'minProcesses' => 1,
            'balanceMaxShift' => 2,
            'balanceCooldown' => 60,
        ],
    ],
],
  1. 在Laravel Forge中添加Supervisor进程,运行php artisan horizon,确保Horizon持续运行
  2. 开启Horizon的监控面板,实时查看队列状态和Worker扩缩情况

关键注意事项

  • 所有方案都要设置最低Worker进程/服务器数,避免极端低谷时无Worker处理任务
  • 队列驱动需采用持久化方案(如Redis、PostgreSQL),防止服务器销毁或进程停掉时丢失任务
  • 测试扩缩容逻辑:模拟高峰队列积压、低谷空闲场景,验证自动调整是否符合预期
  • 控制成本:Forge服务器按小时计费,销毁闲置服务器时需确认无正在处理的任务,可通过php artisan queue:restart优雅终止进程

内容的提问来源于stack exchange,提问作者Ondraasek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 03:00:25