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

Laravel Horizon v5.30.1:Worker重启策略不符配置问题求助

Laravel Horizon v5.30.1 Worker 提前终止且重建延迟问题

我使用Laravel 11开发项目,首次配置Laravel Horizon v5.30.1管理队列,针对「default」队列的supervisor配置如下:

'local' => [
    'supervisor-1' => [
        'processes' => 3,
        'minProcesses' => 3,
        'maxProcesses' => 3,
        'balance' => 'simple',
        'maxTime' => (15 * 60), // 15 min
        'maxJobs' => 10,
        'timeout' => (15 * 60), // 15 min
    ],
],

预期每个worker处理10个任务后终止重建,但实际每个worker仅处理2个任务就停止,且重建间隔不定(20-30秒)。以下是可能的排查和解决方向:

  • 检查任务异常日志
    查看storage/logs/laravel.log或Horizon内置日志,确认worker退出前处理的第二个任务是否抛出未捕获异常——未处理的异常会直接终止worker,表现为任务计数提前结束。

  • 核对任务级超时设置
    排查队列任务类是否定义了$timeout属性,或分发任务时使用了->timeout()方法,这些任务级设置会覆盖Horizon的全局timeout配置。如果任务实际超时远短于15分钟,worker会被强制终止。

  • 调整进程平衡策略
    当前配置的balance => 'simple'虽搭配min/maxProcesses=3理论上应保持固定worker数,但可尝试切换为balance => 'false'(固定进程数)或balance => 'auto',验证是否因平衡逻辑导致worker异常退出。

  • 确认maxJobs配置未被覆盖
    检查.env文件是否存在HORIZON_SUPERVISOR_MAX_JOBS等环境变量,这类变量会优先覆盖配置文件中的maxJobs值。同时在Horizon仪表盘查看worker的实际任务处理计数,确认是否确实仅处理2个任务就退出。

  • 排查系统资源限制
    使用top/htop监控worker进程的内存、CPU占用,若worker内存占用超过PHP的memory_limit配置(默认128MB),会被自动终止。可尝试调整memory_limit或优化任务代码减少内存消耗。

  • 升级Horizon版本
    v5.30.1可能存在已知bug,尝试升级到最新的v5.x稳定版本,看是否已修复该异常退出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:47:10