首页/数据/Redis 进阶速查/读懂慢日志条目字段
性能与排障129 条

读懂慢日志条目字段

条目字段包括 id、timestamp、duration、args 与客户端信息(client_addr/client_name);先看 duration 量级再看 args 里的命令形状。

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

慢日志条目是什么

SLOWLOG 记录的是命令实际执行耗时超过 slowlog-log-slower-than 阈值的调用,默认阈值 10000 微秒(10 毫秒)。它只统计命令执行本身,不含网络收发、排队与客户端处理,所以慢日志里找不到的慢,很可能慢在网络或客户端侧。每条记录给出编号、时间、耗时、命令参数与来源客户端,回答的是「哪条命令、谁在跑、跑了多久」。

基本信息

命令族SLOWLOG GET / LEN / RESET
阈值参数slowlog-log-slower-than,单位微秒,默认 10000;0 记录所有命令,负数关闭
容量参数slowlog-max-len,内存中保留条数,默认 128,超出后旧条目被挤掉
耗时口径仅命令执行阶段,不含网络收发与排队
查看方式redis-cli 会格式化输出,其他客户端拿到的是原始数组

条目字段逐列读法

字段含义判读要点
id自增编号,实例重启后归零对比两次 GET 的新增编号,可知这段时间新增了哪些慢命令
timestamp发生时间,Unix 秒换算成本地时间后再与业务日志对齐,避免时间段错位
duration执行耗时,单位微秒1000000 微秒等于 1 秒,先看量级再谈根因
args命令与参数,7.0 起超长参数会截断看命令形状:KEYS、HGETALL、大集合全量取数是常见大头
client_addr来源地址定位到具体业务实例,避免把客户端坏用法误判成服务端问题
client_name连接名,客户端设置过才有连接名规范化时可以据此直接定位应用模块

典型使用场景

  • 发布后确认耗时是否符合预期,抓出比预期慢的写法
  • 容量评估:统计慢命令出现频率,判断是偶发还是结构性
  • 定位来源:结合 client_addr 与 client_name 找到发起方的应用与实例
  • 改动验证:调整数据结构或命令写法后,重跑同一流程看是否还上榜
  • 与 LATENCY 事件对照:区分「命令本身慢」与「等待后台任务或系统资源」

常用命令

常用命令
redis-cli SLOWLOG LEN                     # 当前积压条数
redis-cli SLOWLOG GET 5                    # 取最近 5 条,最新在前
redis-cli SLOWLOG RESET                    # 清空后重新观察一轮
redis-cli CONFIG GET slowlog-*             # 确认阈值与容量
redis-cli CONFIG SET slowlog-log-slower-than 5000   # 临时收紧到 5 毫秒
redis-cli CONFIG SET slowlog-max-len 512   # 多留一些条便于对照
阈值调到 0 会把所有命令记进来,高并发下内存与运维噪声都会明显增长,只在短窗口排查时使用,用完立刻改回默认值。
SLOWLOG RESET 不可撤销;需要留存证据时先 SLOWLOG GET 1000 导出再清理,否则问题现场直接丢失。

易错点

  • 只看单条记录就下结论:同一条命令反复上榜才是结构性问题,偶发一条要先确认是否与 fork、AOF 重写等后台任务同时间段
  • 忽略 args 的命令形状,把客户端的大批量全量取数当成服务端性能不足,改参数只会掩盖真实原因
  • 忽略 client_addr 与 client_name,无法定位发起方,问题在多个应用间来回推诿
  • 阈值设得过小(如 100 微秒),日志被正常命令刷满,真正的慢命令被淹没
  • 拿慢日志的 duration 当端到端延迟,忽略了网络往返与排队,优化方向直接跑偏

数据来源与参考

  • Redis 官方文档:慢日志条目格式
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌