首页/数据/数据库速查/慢查询日志(SLOWLOG)配置与读取
Redis 运维与场景124 条

慢查询日志(SLOWLOG)配置与读取

慢日志记录超过阈值的命令:slowlog-log-slower-than 微秒阈值(10000=10ms)、slowlog-max-len 条数;排查性能问题的优先入口。

数据库速查数据更新于 2026-10-13

慢日志是什么

慢日志记录执行时间超过阈值的命令,阈值单位是微秒,默认一万微秒也就是十毫秒。它是排查性能问题的优先入口:每条记录都包含命令、耗时与调用方信息,能直接指向具体命令与来源。需要注意的是它只统计命令执行耗时,不包含客户端排队与网络传输时间。

基本信息

阈值参数单位微秒,默认一万微秒即十毫秒;零表示记录所有命令,负一表示关闭
保留条数以列表形式保存,超过长度丢弃最旧的记录
记录内容编号、时间戳、耗时、命令参数、客户端地址与名称
查看方式查看当前条数、查看最近若干条、清空日志
性能开销记录本身开销很小,阈值过低会显著增加内存与采集压力
适用范围所有主流版本均支持

典型使用场景

  • 接口变慢时定位是哪条命令耗时高
  • 排查大键操作:大对象删除与过期清理会以命令形式出现
  • 验证优化效果:调整后再看慢日志是否减少
  • 定位调用来源:通过客户端地址与名称找到对应服务
  • 定期巡检输出慢命令榜单
  • 发现批量脚本在非预期时段执行

配置与读取

配置与读取
CONFIG GET slowlog-log-slower-than   # 默认 10000 微秒,约十毫秒
CONFIG SET slowlog-log-slower-than 10000   # 按业务基线调整阈值
CONFIG SET slowlog-max-len 128   # 保留最近 128 条
SLOWLOG LEN   # 当前记录条数
SLOWLOG GET 10   # 查看最近 10 条
SLOWLOG RESET   # 清空,改动参数后重测时使用

记录字段读法

字段含义排查用途
编号自增序号用于定位记录顺序
时间戳命令执行时刻与业务告警时间对齐
耗时执行所用微秒数判断是否真的慢
命令参数命令名与参数能看出操作了哪个键
客户端地址调用来源定位到具体服务
客户端名称连接名称客户端设置过名称时可见
条数上限保留的记录条数超长会丢弃最旧记录
慢日志只记执行耗时,不含排队与网络时间:客户端观察到的耗时更长是正常的,两者差距大往往说明链路上存在排队或网络问题。
大键的删除与过期清理会以命令形式出现在慢日志里;看到参数中是明显的大对象键名时,应优先检查大键治理情况。
把阈值调到零并长期开启,会让慢日志刷爆内存与采集系统,只适合短时间诊断,用完立刻恢复默认阈值。

慢日志使用检查清单

  • 按业务基线设定阈值,不要照搬默认值
  • 全量记录只在短时诊断时使用,用完即恢复
  • 改动参数后清空旧记录,避免新旧数据混淆
  • 把慢日志采集接入监控,形成趋势而不是临时翻看
  • 结合客户端地址定位到具体服务与调用方
  • 关注参数里的大键名,与键空间分析互相印证
慢日志记录的是服务端执行时间,客户端感知的总延迟还包括排队、网络与序列化:只拿慢日志解释用户侧延迟容易得出错误结论,两端数据要一起看。

易错点

  • 把阈值调到零并长期保留:慢日志刷爆内存与采集系统,本身变成新的故障源
  • 改完阈值不清空旧记录:新旧数据混在一起,误判命令与耗时
  • 用慢日志耗时直接解释用户侧延迟:它不含排队与网络时间,差距大说明问题在链路上
  • 只看慢命令不看参数:无法定位是哪个键或哪种操作模式导致变慢,排查效率低
  • 从不关注慢日志:等于放弃一条成本极低的问题线索,性能问题只能靠猜

数据来源与参考

  • Redis 官方文档: SLOWLOG
  • Redis 官方文档: slowlog-log-slower-than

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌