首页/数据/Redis 进阶速查/CLUSTER COUNT-FAILURE-REPORTS 故障报告

CLUSTER COUNT-FAILURE-REPORTS 故障报告

CLUSTER COUNT-FAILURE-REPORTS node-id 返回有多少节点把目标节点标记为疑似失败,用于分析失败判定的传播与误判。

Redis 进阶速查数据更新于 2026-10-13

失败判定与报告计数

Redis Cluster 的故障判定是分布式的:主节点在 cluster-node-timeout 内联系不上对端时,先把对端记为 PFAIL,然后向其他主节点收集状态,当同样认定 PFAIL 的主节点数达到多数派,该节点被判为 FAIL 并广播全网。CLUSTER COUNT-FAILURE-REPORTS <node-id> 返回本节点当前收集到的、把目标节点标记为疑似失败的报告条数,用于观察判定过程而不是判定结论。

基本信息

命令CLUSTER COUNT-FAILURE-REPORTS <node-id>
返回值当前累积的失败报告条数(整数)
触发条件超过 cluster-node-timeout 未应答进入 PFAIL
升级条件报告数达到主节点多数派则升级为 FAIL
适用平台Redis Cluster 3.0 及以上;单机与哨兵模式没有该命令
权限要求普通用户即可,只读命令

典型使用场景

  • 误判排查:节点被标记 FAIL 但业务仍可访问时,看报告数是否在少数派区间反复起落
  • 抖动定位:多次采样对比计数,区分持续失联与瞬时丢包
  • 迁移前体检:扩容、迁移期间确认没有节点正处于报告累积阶段
  • 复盘取证:结合 CLUSTER NODES 的 flags 与报告数还原判定链条
  • 阈值调优:调整 cluster-node-timeout 前后对比报告数峰值,评估误判风险

常用写法

常用写法
redis-cli --cluster check 127.0.0.1:6379                  # 先看集群整体健康
redis-cli -c CLUSTER NODES | grep -E 'fail|pfail'         # 找出可疑节点及其 ID
redis-cli -c CLUSTER COUNT-FAILURE-REPORTS <node-id>      # 采样目标节点的报告数
redis-cli -c CLUSTER COUNT-FAILURE-REPORTS <node-id>      # 隔几十秒再采一次看趋势
redis-cli CLUSTER INFO | grep cluster_state               # 集群状态是否已变 fail
redis-cli CONFIG GET cluster-node-timeout                 # 对照超时阈值判断合理性

报告数怎么读

表现含义处置方向
持续为 0没有节点在报告失败正常,无需动作
少量且波动个别链路抖动或节点变慢查丢包、交换机与节点 CPU 饱和
持续增长直至多数派真实失联或网络分区按分区预案处置,不要先重启节点
清零后又快速累积判定在反复震荡核对超时阈值与节点负载波动
多数派统计只算主节点:从节点的报告不参与投票,判断对象要在主节点集合内看,节点角色变了结果口径也会变。
报告数上升时不要直接重启节点:重启会清空本节点状态与报告,把分区证据抹掉。先留存 CLUSTER NODES 输出、日志与网络指标,再决定动作。

易错点

  • 把报告数当故障结论:它反映的是其他节点的观察,网络抖动同样能堆出高计数,要与失联时长、丢包率一起判断
  • node-id 抄错或用了简写:命令不会校验你要找的是谁,返回一个看似合理的数字反而误导结论
  • cluster-node-timeout 设得过小:GC 停顿或短暂拥塞就被判 PFAIL,报告数反复触顶引发无谓的主从切换
  • 只看报告数不看 CLUSTER INFO:报告数上升但多数派未形成时集群仍是 ok,此时动手改配置属于自己制造故障

数据来源与参考

  • Redis 官方文档:故障报告命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌