错误信息直接指向动作
排障过程中反复出现的错误信息其实就那么几条,记住它们的指向能大幅缩短定位时间:加载中表示数据尚未就绪,应当稍后重试;只读表示写入被发到了副本;持久化失败被禁写说明后台保存出了问题;内存超限表示达到上限且淘汰策略不允许删除;集群不可用表示槽没有完整覆盖。多数错误文本本身就给出了处理方向。
基本信息
| 可重试类 | 加载中之类的临时状态,稍后重试即可恢复 |
|---|---|
| 需处置类 | 持久化失败、内存超限等,必须人工介入 |
| 路由类 | 只读、集群不可用,指向连接目标或槽覆盖问题 |
| 影响范围 | 部分错误只影响写请求,读请求仍然正常 |
典型使用场景
- 业务侧突然大量报错,按错误文本快速判定是重试还是必须处置
- 客户端重试策略设计,区分可重试与不可重试的错误类别
- 故障复盘时把错误文本与当时的实例状态对上,还原时间线
- 值班手册中整理常见错误的处置动作,缩短夜间响应时间
- 排查写入被拒但实例看起来正常的现象
常见错误与查看
常见错误与查看
# 加载中:数据尚未就绪,稍后重试
redis-cli INFO persistence | grep -E 'loading'
# 持久化失败被禁写:查看后台保存状态
redis-cli INFO persistence | grep -E 'rdb_last_bgsave_status|aof_last_write_status'
# 内存超限:查看上限与淘汰策略
redis-cli INFO memory | grep -E 'maxmemory|used_memory:'
# 集群不可用:查看槽覆盖情况
redis-cli CLUSTER INFO | grep -E 'cluster_state|cluster_slots_assigned'错误分类速查
| 错误类型 | 含义 | 处置动作 |
|---|---|---|
| 加载中 | 实例正在加载数据 | 稍后重试,不要反复重连 |
| 只读 | 写请求打到了副本 | 检查路由或主从角色 |
| 持久化失败禁写 | 后台保存失败触发写保护 | 修复磁盘或保存问题后恢复 |
| 内存超限 | 达到上限且策略不允许淘汰 | 扩容或调整淘汰策略 |
| 集群不可用 | 槽未完整覆盖或状态异常 | 按集群故障流程处理 |
把可重试错误与需处置错误混为一谈,客户端会对不可恢复的错误持续重试,放大无效流量并延迟真正的处置时间。
同样的错误文本在不同原因下都可能出现,确认处置动作前先看一眼实例状态字段,避免按经验直接下结论。