按错误类型计数
INFO errorstats 按错误前缀统计各类错误的返回次数,例如 ERR、WRONGTYPE、READONLY、NOSCRIPT。它给出的是全局视角:客户端到底在踩哪一类坑、占比如何。比起翻单条错误日志,这种分类计数更容易发现系统性问题。
基本信息
| 输出形式 | errorstat_XXX:count=NNN |
|---|---|
| 重置方式 | CONFIG RESETSTAT |
| 版本 | Redis 6.2 及以上 |
| 用途 | 错误分类、客户端回归发现 |
| 互补命令 | INFO commandstats |
典型使用场景
- 客户端发版后错误计数抬头,快速定位到具体错误类型
- 巡检时对比各类错误的占比与增速
- 排查 WRONGTYPE:读写用了错误的数据结构
- 排查 READONLY:切换后写流量仍指向从库
- 统计 NOSCRIPT 出现频率,判断客户端回退逻辑是否完备
采集与对照
采集与对照
redis-cli INFO errorstats # 查看全部错误分类计数
redis-cli INFO errorstats | grep -E 'WRONGTYPE' # 只看类型错误
redis-cli INFO errorstats | grep -E 'READONLY|NOSCRIPT'
redis-cli INFO commandstats | head -20 # 命令调用次数,与错误对照看
redis-cli CONFIG RESETSTAT # 清零统计,用于前后对比
redis-cli INFO errorstats # 清零后重新观察一段时间错误前缀与根因
| 错误前缀 | 含义 | 常见根因 |
|---|---|---|
| ERR | 通用错误 | 命令语法或参数有误 |
| WRONGTYPE | 键类型不匹配 | 读写用了错误的数据结构 |
| READONLY | 向从库发起写操作 | 切换后客户端仍指向旧节点 |
| NOSCRIPT | EVALSHA 脚本未命中 | 实例重启或脚本被清空 |
| NOAUTH | 未通过认证 | 密码配置或连接初始化顺序问题 |
| EXECABORT | 事务被中断 | 事务内命令出错后仍提交 |
| MOVED 与 ASK | 集群重定向 | 客户端未做集群路由 |
CONFIG RESETSTAT 会清空几乎所有统计计数器,包括命令统计与错误统计。清零前先把当前值导出,否则就失去了对比基准。
把错误计数当噪声忽略,会错过客户端回归的早期信号:错误率抬头通常比业务侧投诉更早出现。
errorstats 给的是累计计数,没有请求上下文。要定位到具体调用,需要结合 SLOWLOG、客户端日志与 commandstats 一起看。
错误计数是累计值,判断时要结合采集周期换算成速率,否则运行很久的实例会因为历史累积而显得错误很多。