首页/数据/Redis 进阶速查/slowlog-max-len 缓冲区长度
性能与排障129 条

slowlog-max-len 缓冲区长度

slowlog-max-len 控制慢日志保留条数(默认 128),超出后旧条目被丢弃;排查窗口短的场景适当调大。

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

slowlog-max-len 是什么

slowlog-max-len 控制慢日志在内存里保留多少条记录,默认 128 条,写满之后最旧的记录被丢弃。它维护的是一块内存中的环形缓冲,不是落盘日志,所以「能回看多久」完全由这个上限和慢命令的产生速度共同决定。

基本信息

配置项slowlog-max-len
默认值128
姊妹配置slowlog-log-slower-than(默认 10000 微秒,即 10 毫秒;0 记录全部命令,负数关闭)
存储位置实例内存
相关命令SLOWLOG GET / LEN / RESET

典型使用场景

  • 收到慢查询告警后要回看历史,但 128 条几分钟就被刷满
  • 压测期间调大上限,保留完整样本供分析
  • 重要变更前调大上限,让变更后的对比有足够数据
  • 排查低频偶发慢命令,需要更长的观察窗口
  • 配合外部周期采集,把慢日志归档到分析系统

调整与观察

调整与观察
redis-cli CONFIG GET slowlog-max-len slowlog-log-slower-than  # 先看现状
redis-cli CONFIG SET slowlog-max-len 512                       # 运行时调大上限
redis-cli SLOWLOG LEN                                          # 当前条数
redis-cli SLOWLOG GET 3                                        # 最近 3 条:id/时间戳/耗时/命令
redis-cli INFO memory | grep used_memory_human                 # 评估内存余量
redis-cli CONFIG REWRITE                                       # 需要持久化时写回配置文件

配置与条目读法

项含义取值建议
slowlog-max-len内存中保留的条目数128 偏短,线上常放 512 至 1024
slowlog-log-slower-than判定为慢的阈值(微秒)默认 10 毫秒,按业务 SLA 收紧或放宽
SLOWLOG LEN当前条目数长期等于上限说明记录在被持续刷掉
timestamp命令执行的绝对时间(秒)直接与发布、告警时间对齐
duration服务端执行耗时(微秒)不含网络往返,别与端到端延迟混为一谈
慢日志只统计服务端执行命令本身的时间,不含网络传输、排队与客户端处理;客户端观测到的慢和这里的慢不是同一个量。
条目里的命令参数会被截断,超长命令看不到完整内容,需要在应用侧补充上下文才能定位。
上限调大意味着内存里常驻更多日志条目;长跑实例应配合定期导出与清理,避免日志无界积压。
上限要与采集频率匹配:例如每 5 分钟导出一批,512 条通常足以覆盖突发;上限远大于采集速度能覆盖的量,只是白占内存。

易错点

  • 把保留条数当日志系统用,真正要查历史时记录早已被刷掉
  • 调大后不定期归档清理,长跑实例在内存里积压大量条目
  • 阈值保持默认 10 毫秒就断言「没有慢命令」,只是没达到门槛
  • 把服务端耗时当端到端延迟,忽略网络与排队时间

数据来源与参考

  • Redis 官方文档:slowlog-max-len 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌