最新消息:

Redis Slowlog慢查询日志

IT技术 ipcpu 135浏览 0评论

toc

一、Redis Slowlog概述

Redis Slowlog是排查性能问题关键监控指标。它是记录Redis queries运行时间超时特定阀值的系统。
这类慢查询命令被保存到Redis服务器的一个定长队列,最多保存slowlog-max-len(默认128)个慢查询命令。
当慢查询命令达到128个时,新产生的慢查询被加入前,会从队列中删除最旧的慢查询命令。

二、Redis Slowlog的配置

redis slowlog通过2个参数配置管理,默认命令耗时超过10毫秒,就会被记录到慢查询日志队列中;队列默认保存最近产生的128个慢查询命令。

slowlog-log-slower-than #慢查询阀值,单位微秒. 默认100000(10毫秒);
slowlog-max-len #慢查询存储的最大个数,默认128;

生产环境可以适当调小阈值调大个数,慢查询不会占用过多的内存。

三、Redis Slowlog读取

redis-cli客户端通过slowlog get指令获取最新10条慢查询命令。

127.0.0.1:6381> SLOWLOG get 2
1) 1) (integer) 6
   2) (integer) 1458734263
   3) (integer) 74372
   4) 1) "hgetall"
      2) "max.dsp.blacklist"
2) 1) (integer) 5
   2) (integer) 1458734258
   3) (integer) 5411075
   4) 1) "keys"
      2) "max.dsp.blacklist"

分析slowlog query:
以第一个HGET命令为例分析,每个slowlog实体共4个字段:

  • 字段1:1个整数,表示这个slowlog出现的序号,server启动后递增, 当前为6.
  • 字段2:表示查询执行时的Unix时间戳(秒级)
  • 字段3:表示查询执行微妙数,当前是74372微妙,约74毫秒ms.
  • 字段4: 表示查询的命令和参数,如果参数很多或很大,只会显示部分并给数参数个数;

四、Redis Slowlog注意事项

而Redis的慢查询只记录自己“被cpu服务的时间”(redis处理),不包含排队等待、IO等待(如AOF SYNC)这类时间。

但是一个完整的请求是包括网络建联、排队等待、redis处理、数据返回的,所以这这个指标只能用来排查redis key和redis命令是否合理,对于操作系统网络或者IO引起的问题,无能为力。

那还有方法可以监控到完整的响应时间么?
tcprstat 工具可以监控TCP层完整的响应时间。但是他工作在TCP层,无法探知是哪个Redis命令。

转载请注明:IPCPU-网络之路 » Redis Slowlog慢查询日志

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址