php - Horizon 自动队列平衡不起作用
问题描述
我最近迁移到 Horizon 来管理我所有的 Laravel 应用程序队列。
我有 7 名主管根据我的功能需求处理 13 个不同的队列。一切似乎都很好......除了一个队列在一段时间后以某种方式停止处理作业。
处理这个队列的主管定义如下:
'supervisor-general' => [
'connection' => 'redis',
'queue' => ['smsSending', 'approvalWorkflow', 'filesProcessing', 'default'],
'balance' => 'auto',
'minProcesses' => 4,
'maxProcesses' => 10,
'memory' => 128,
'tries' => 3,
'nice' => 0,
],
当 Horizon 最初启动时,会分配一个进程来处理approvalWorkflow
队列。一段时间后(~1h)我注意到作业似乎不再处理,检查 Horizon 仪表板,我看到以下状态:
队列 | 流程 | 工作 |
---|---|---|
短信发送 | 4 | 0 |
审批工作流 | 0 | 81 |
文件处理 | 4 | 0 |
默认 | 4 | 0 |
这显然是相当令人困惑的:
- 拥有最多工作的队列拥有最少的进程——而且它也为零..
- 我的理解是 Horizon 总是会为每个队列分配至少 1 个进程
- 其他三个队列各有 4 个进程,总共 12 个,而我在配置中指定最多 10 个
任何人都知道如何解决这个问题?
解决方案
推荐阅读
- angular - 单选按钮禁用和启用取决于值 angular 6
- sql - 获取每个 id 的最新记录
- php - Laravel 5.6 在关系中应用枢轴范围
- c++ - macOS 上的 Qt GUI 应用程序:如何找到当前活动的屏幕?
- r - 在 deSolve 中延迟参数值/流入和流出速率
- azureservicebus - PeekLock Microsoft Azure 服务总线
- c# - 如何将依赖项注入 signalR 核心的集线器构造函数?
- c# - 来自 API 的多种返回类型
- json - Google Cloud Text-to-Speech 返回“INVALID_ARGUMENT”
- java - 如何在 Android 9 上制作应用程序支持