在redis 8.12候选版中,slowlog get每条记录的第八项是新增cpu耗时,第三项仍为命令耗时。先确认版本、返回数组长度和off-cpu-tracking设置,再结合操作系统调度与负载判断;旧客户端固定按六项或七项解包时需要适配,不能按位置错读成命令参数。
先读取配置和真实返回结构
INFO server CONFIG GET off-cpu-tracking CONFIG GET slowlog-log-slower-than SLOWLOG GET 5
上述命令只读现有状态。慢日志没有记录时先检查阈值和实际工作负载,不要为了制造样本在生产库执行长耗时命令或把所有请求永久记入慢日志。

Redis 8.12配置注释说明off-cpu-tracking的默认值与采样开销
按版本兼容解析,保留未知字段
8.12返回结构依次包含ID、时间戳、命令耗时、记录下来的参数数组、客户端地址、客户端名称、原始命令参数总数、CPU耗时。参数数组可能截断,第七项仍用于表达原始参数数量,不能把它当作CPU时间。
程序读取时先检查数组至少八项,再读取索引7;兼容旧版时允许缺少新项,并在日志里记录版本。保留原始数值和服务端单位,不把CPU耗时与墙钟时间混用成利用率。

Redis 8.12慢日志实现返回八个字段
把采样开销和解释范围一起保留
配置文件默认off-cpu-tracking yes,注释说明每次事件循环唤醒会采样主线程CPU时间,用于识别至少10毫秒的off-CPU情况。每次唤醒仅处理单个请求的负载可能有几个百分点的额外开销,应在自己的测试负载上比较。
命令耗时较高而CPU耗时较低,只能作为排查调度等待或阻塞的线索;应同时看同一时间段的CPU压力、系统日志和Redis日志,不能由一条慢记录断言网络、磁盘或邻居进程就是原因。


















