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

JetStream集群消费者无Quorum停滞问题的排查与修复咨询

日志含义解释

这些告警日志表示JetStream的集群消费者无法达成法定人数(Quorum),已经停止工作(stalled)。

拆解日志中的关键信息:

  • nbo > notification > Hermes_xxx_notification:这是JetStream消费者的标识,格式为账户 > 流(Stream)名称 > 消费者名称,其中Hermes_xxx_notification是你的通知服务Hermes创建的集群消费者实例。
  • has NO quorum, stalled:JetStream集群消费者依赖多副本机制保证高可用,需要超过半数的副本节点在线且正常通信才能维持Quorum(3个节点的集群中,Quorum为2)。当副本节点无法达成一致时,消费者会停止处理消息,避免数据不一致。

出现这个问题的常见原因包括:

  • 部分NATS Pod离线或状态异常
  • Pod之间存在网络分区,导致副本节点无法通信
  • NATS节点资源不足(CPU/内存),无法处理JetStream的同步请求
  • 消费者副本配置异常,或副本同步出现故障
修复步骤

针对你的环境(3个NATS Pod、2.6.5版本),可以按以下步骤排查修复:

  • 检查NATS集群状态
    执行nats server list命令,查看3个Pod的在线状态,确认是否有节点显示unavailable。如果有离线节点,先恢复该Pod(比如在K8s中重启Pod、检查Pod的资源限制或节点调度问题)。

  • 查看消费者副本详情
    针对日志中的某个消费者(比如Hermes_Z6YxJu8DajHFPJHexMQ5A9_notification),执行nats consumer info nbo notification Hermes_Z6YxJu8DajHFPJHexMQ5A9_notification,查看消费者的副本分布和状态,确认是否有副本处于异常状态。

  • 排查网络连通性
    检查NATS Pod之间的网络是否正常:可以在Pod内部ping其他Pod的IP,或者用nats ping命令测试节点间的连通性。如果存在网络分区,需要修复K8s集群的网络插件配置。

  • 重建异常消费者
    如果消费者副本无法自动恢复,先删除异常消费者:

    nats consumer delete nbo notification Hermes_Z6YxJu8DajHFPJHexMQ5A9_notification
    

    然后让Hermes服务重新创建消费者。注意删除前确认未处理的消息是否可以重新消费,或已被其他副本处理。

  • 升级NATS版本(推荐)
    2.6.5版本存在不少JetStream的已知bug(包括Quorum处理、副本同步等问题),升级到较新的稳定版本(如2.9.x或更高)可以大幅减少这类异常的发生。

  • 检查资源配置
    确认NATS Pod的CPU、内存资源是否满足需求,资源不足会导致节点无法及时处理JetStream的同步请求,进而丢失Quorum。可以查看Pod的监控指标(CPU使用率、内存占用),调整资源限制。

内容的提问来源于stack exchange,提问作者Mohammad Reza Karimi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:56:09