快速结论:在 n8n webhook 模式连接 Redis/Valkey Cluster 时,队列初始化阶段刷新 Redis 集群 slots 缓存失败,触发 Webhook Processors - ClusterAllFailedError: Failed to refresh slots cache.,Webhook 请求会一直挂起。优先排查 Redis Cluster 的 slots 刷新超时与刷新间隔配置。
适用环境:n8n 2.44.6,npm 安装,Node.js 26.12.1,PostgreSQL,scaling(single-main)执行模式,共 5 个实例(1 个 main/leader、4 个 worker);使用 Redis Cluster(Valkey Cluster)。未确认操作系统、Python、CUDA 或显卡信息。
最快修复方案:Issue 中报告者通过设置 QUEUE_BULL_REDIS_SLOT_REFRESH_TIMEOUT 和 QUEUE_BULL_REDIS_SLOT_REFRESH_INTERVAL 后问题解决。具体取值请参考 PR #16592 下的说明,并结合实际 Redis Cluster 响应情况调整。
注意事项:该处理针对的是 Bull 队列连接 Redis Cluster 时的 slots 缓存刷新,不是 Redis 本身不可达;报告者已确认 ioredis 调试日志能正常发现并连接 Redis。环境变量具体数值未在本 Issue 中给出,调整前应确认所用 n8n 版本对这些配置项的读取方式,避免直接把示例值照搬进生产。
问题场景
用户在 n8n 2.44.6 中以 n8n webhook 方式运行 Webhook Processor,后端使用 Redis Cluster(Valkey Cluster)。同一套 Redis 环境在不带 webhook 参数启动 n8n 时没有出现该问题。开启该模式后,日志持续出现队列连接 Redis 集群失败,Webhook 请求无法被正常处理,表现为无限挂起。
报错原文
ClusterAllFailedError: Failed to refresh slots cache.
at tryNode (node_modules/ioredis/built/cluster/index.js:308:31)
at node_modules/ioredis/built/cluster/index.js:325:21
at Timeout.<anonymous> (node_modules/ioredis/built/cluster/index.js:662:24)
at Timeout.run (node_modules/ioredis/built/utils/index.js:117:22)
at listOnTimeout (node:internal/timers:687:11)
at processTimers (node:internal/timers:618:7)
2026-10-25T22:30:55.828Z | error | Failed to refresh slots cache.
2026-10-25T22:30:55.828Z | error | Queue errored {"scopes":["scaling"],"error":{"name":"ClusterAllFailedError","message":"Failed to refresh slots cache.","stack":"ClusterAllFailedError: Failed to refresh slots cache.\n at tryNode (node_modules/ioredis/built/cluster/index.js:308:31)\n at node_modules/ioredis/built/cluster/index.js:325:21\n at Timeout.<anonymous> (node_modules/ioredis/built/cluster/index.js:662:24)\n at Timeout.run (node_modules/ioredis/built/utils/index.js:117:22)\n at listOnTimeout (node:internal/timers:687:11)\n at processTimers (node:internal/timers:618:7)"},"file":"scaling.service.js"}
原因分析
从堆栈看,错误发生在 ioredis Cluster 的 tryNode 与 slots cache 定时刷新逻辑中:Bull 队列在 Webhook Processor 模式下尝试刷新 Redis Cluster 的 slots 缓存,但刷新在默认超时或刷新间隔内未能成功,最终抛出 ClusterAllFailedError。由于普通模式不启用该队列路径,因此同一 Redis 环境在其他启动方式下可能不报错。
报告者通过 ioredis debug 模式确认 Redis 节点能被发现并连接,因此可能原因不是 Redis 集群完全不可达,而是 slots 刷新相关的超时和间隔参数与实际集群响应不匹配。Issue 中未进一步说明具体根因,上述判断属于基于日志与验证结果的推断。
环境排查
- 确认 n8n 运行模式:是否使用
n8n webhook启动 Webhook Processor。 - 确认 n8n 版本:Issue 环境为 2.44.6,5 个集群实例版本一致,无 version-mismatch。
- 确认 Redis/Valkey 是否为 Cluster 模式,以及集群节点、slots 分布是否正常。
- 检查是否已设置
QUEUE_BULL_REDIS_SLOT_REFRESH_TIMEOUT与QUEUE_BULL_REDIS_SLOT_REFRESH_INTERVAL,以及这些变量是否被n8n webhook进程实际读取。 - 用 ioredis debug 日志或 Redis 客户端确认节点发现、连接与 slots 信息读取是否稳定。
- 检查 Webhook 请求是否确实挂起,以及是否同时出现
Queue errored {"scopes":["scaling"]}。
解决步骤
- 先确认当前启动方式为
n8n webhook,并保留完整错误日志,确认报错来自scaling.service.js的队列初始化。 - 在 Webhook Processor 进程所在环境中设置
QUEUE_BULL_REDIS_SLOT_REFRESH_TIMEOUT和QUEUE_BULL_REDIS_SLOT_REFRESH_INTERVAL。具体取值参考 PR #16592 下的说明,Issue 未给出固定数值。 - 重启 Webhook Processor,使新的队列 Redis 配置生效。
- 观察日志中是否仍出现
Failed to refresh slots cache.,并检查Queue errored是否消失。 - 如果仍失败,保留 ioredis debug 日志和 n8n 队列错误日志,进一步核对 Redis Cluster 节点响应与网络链路。
验证方法
重启后确认日志不再出现 ClusterAllFailedError: Failed to refresh slots cache. 和 Queue errored {"scopes":["scaling"]};随后向 Webhook 端点发起测试请求,确认请求能正常完成而不是无限挂起。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug]: [Usage]: RTX PRO 5000 (SM120) deadlocks at 3-4W during vLLM 0.32.0 startup with 70B NVFP4 model, even with --enforce-eager](https://www.chat-gpts.plus/wp-content/uploads/2026/10/63536-a00b257b-768x403.jpg)
