首页/数据/Redis 进阶速查/健康检查设计要点
性能与排障129 条

健康检查设计要点

健康检查:PING 判活、关键指标判健康(内存水位/持久化状态/主从链路)、拓扑判角色;区分 liveness 与 readiness,超时短且避免重命令。

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

健康检查怎么设计

健康检查要分层:liveness 只回答「进程还活着吗」,用 PING 就够;readiness 还要回答「现在能接流量吗」,需要看角色、主从链路、持久化状态与内存水位。两层混用会放大故障——liveness 失败通常意味着重启,readiness 失败只是摘流量,用重命令做 liveness 探针会把一次紧张判成一路重启。

基本信息

liveness 判据PING 返回 PONG
readiness 判据角色、主从链路、持久化状态、内存水位
集群判据cluster_state 为 ok
权限建议用只读账号或 ACL 限定命令范围
频率与超时压测校准,探针本身不能成为负载
禁忌DBSIZE、KEYS 等重命令不能做探针

典型使用场景

  • 容器编排:liveness 与 readiness 分开配置,避免误重启
  • 摘除坏节点:持久化失败或主从断链的节点从流量中摘掉
  • 集群与哨兵:角色变化后 readiness 要跟着更新
  • 上线灰度:探针确认新实例就绪后再放流量
  • 告警消噪:探针只暴露必要信号,避免与业务监控重复告警

最小示例

最小示例
redis-cli PING                                     # liveness:进程是否响应
redis-cli INFO persistence | grep -E 'rdb_last_bgsave_status|aof_last_write_status'
redis-cli INFO replication | grep -E 'role|master_link_status'
redis-cli -c CLUSTER INFO | grep cluster_state      # 集群就绪状态
redis-cli INFO memory | grep -E 'maxmemory_human|used_memory_human'   # 水位判断
redis-cli --user probe --pass <pw> PING             # 专用只读账号做探针

探针设计对照

层次判据误判风险
livenessPING 是否有响应重命令探针会拖慢实例,甚至造成误重启
readiness角色、链路、持久化、水位只看存活会让坏节点继续接流量
集群就绪cluster_state 为 ok集群未就绪时接流量会持续报错
加载中状态实例正在加载数据与真故障混淆会造成不必要的重启
liveness 与 readiness 必须分开:前者失败会重启实例,后者失败只摘流量,用错层次会把「暂时不可用」升级成「反复重启」。
探针的频率与超时要压测校准,并给探针配只读账号;探针本身不能成为新的负载来源,也不该使用权限过大的账号。

易错点

  • 用 DBSIZE、KEYS 这类命令做探针:探针本身变成负载,规模越大越危险
  • 只测存活不测状态:持久化失败、主从断链的节点继续接流量
  • 把 liveness 写成带重命令的判断:实例一紧张就被判死并重启,故障被放大
  • 探针使用管理员账号:权限被放大,泄露或误操作的影响面都更糟
  • 探针频率与超时不校准:高频探针增加连接开销,超时过短会造成抖动误判

数据来源与参考

  • Redis 官方实践:健康检查
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌