Redis慢日志查询

一、概述

Redis的慢日志查询功能用于记录执行时间超过给定时长的命令,用户可以通过这个功能产生的日志来监视和优化查询速度。

二、一条客户端命令的生命周期

  1. 命令发送
  2. 命令排队
  3. 命令执行
  4. 返回结果
    注意: 慢查询只统计命令执行的时间,所以没有慢查询并不代表客户端没有超时问题

在这里插入图片描述

三、预设阀值怎么设置

slowlog-log-slower-than,它的单位是微秒,默认值是10000,0为记录所有命令,小于0对所有命令都不记录。不建议slowlog-log-slower-than的值设置为 = 0 或者 < 0

四、慢查询记录存放

Redis使用了一个列表来存储慢查询日志。slowlog-max-len参数用来指定列表的最大长度。一个新的命令满足慢查询条件时被插入到这个列表中,当慢查询日志列表已处于其最大长度时,最早插入的一个命令将从列表中移出,例如slowlog-max-len设置为5,当有第6条慢查询插入的话,那么队头的第一条数据就出列,第6条慢查询就会入列。

五、慢查询数据结构

每个慢查询日志有4个属性组成,分别是慢查询日志的标识id、发生时间戳、命令耗时、执行命令和参数
在这里插入图片描述

六、 慢查询相关命令

slowlog get [n],获取慢查询日志列表,可指定返回条数
slowlog len,获取慢查询日志列表当前的长度
slowlog reset,清空慢查询日志列表

七、实践优化

  1. 线上可加大slow-max-len的值,记录慢查询存长命令时redis会做截断,不会占用大量内存,线上可设置1000以上
  2. slowing-log- -slower-than配置建议:由于
    Redis:采用单线程响应命令,对于高流量的场景,如果命令执行时间在1毫秒以上,那么
    Redisa最多可支撑QPS不到1000因此对于高QPS场景的 Redis?建议设置为1毫秒
  3. 慢査查询只记录命令执行时间,并不包括命令排队和网络传输时间。因此客户端执行命令的时间会大于命令实际执行时间。因为命令执行排队机制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求超时,需要检直该时间点是否有对应的慢查询。
  4. 由于慢查询日志是一个先进先出的队列,也就是说如果慢查询比较多的情况下,可能会丢失部分慢查询命令,为了防止这种情况发生,可以定期执行slowlog get命令将慢查询日志持久化到其他存储中。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值