美文网首页Redis
redis慢查询记录的搭建和管理记录的参数说明

redis慢查询记录的搭建和管理记录的参数说明

作者: PHP的艺术编程 | 来源:发表于2018-12-24 19:18 被阅读0次

在MySql提供慢查询日志来定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预定的最大值,就将这条命令的相关信息记录。

慢查询的参数配置

  • 时间最大值设置(slowlog-log-slower-than)
  • 慢查询记录存放(slowlog-max-len)
slowlog-log-slower-than
  • 是以微秒为单位,默认值是10000(10毫秒)
  • 如果slowlog-log-slower-than=0会记录所有的命令
  • slowlog-log-slowerthan<0对于任何命令都不会进行记录
slowlog-max-len

redis使用一个列表来存储慢查询日志,当日志列表处于最大长度时,最早插入的命令将从列表中移除

如何修改参数配置

  • 修改配置文件
  • 使用config set 命令动态修改
修改配置文件
vim /etc/redisConf/redis.conf

slowlog-log-slower-than 10000
slowlog-max-len 128
用config set命令修改
//使用config set命令设置
config set slowlog-log-slower-than 10000
config set slowlog-max-len 128
config rewrite //将redis配置持久化到本地配置文件
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"

对慢查询记录数据的操作

//获取慢查询日志列表当前的长度
127.0.0.1:6379> slowlog len
(integer) 47
//获取慢查询日志 slowlog get [n] 参数n可以指定条数
127.0.0.1:6379> slowlog get 1
1) 1) (integer) 46   //慢查询日志的标识id
   2) (integer) 1545510092 // 什么时候的时间戳
   3) (integer) 10977 //命令耗时
   4) 1) "RPOP"   //执行命令
      2) "sy:notify:send_list_sys"  //key

注意:
我们需要解释一下命令耗时是表示哪个时间段的时间。redis的一条命令执行一共有四个阶段 1.发送命令 2.排队 3. 执行命令 4.返回结果。命令耗时只记录第3阶段的时间,所以如果没有慢查询并不代表客
户端没有超时问题

//慢查询日志清空
127.0.0.1:6379> slowlog get 1
1) 1) (integer) 46
   2) (integer) 1545510092
   3) (integer) 10977
   4) 1) "RPOP"
      2) "sy:notify:send_list_sys"
127.0.0.1:6379> slowlog resett
(error) ERR Unknown SLOWLOG subcommand or wrong # of args. Try GET, RESET, LEN.
127.0.0.1:6379> slowlog reset
OK
127.0.0.1:6379> slowlog get 1
(empty list or set)
127.0.0.1:6379>

总结

slowlog-max-len配置建议设置为1000以上,slowlog-log-slower-than配置,默认值超过10毫秒判定为慢查询,但是如果高OPS场景的Redis建议设置为1毫秒。

由于慢查询日志是一个先进先出的队列,也就是说如果慢查询比较多
的情况下,可能会丢失部分慢查询命令,为了防止这种情况发生,可以定期
执行slow get命令将慢查询日志持久化到其他存储中,然后可以制作可视化界面进行查询。

慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。因
此客户端执行命令的时间会大于命令实际执行时间。因为命令执行排队机
制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求超时,需要检
查该时间点是否有对应的慢查询,从而分析出是否为慢查询导致的命令级联
阻塞。

相关文章

  • redis慢查询记录的搭建和管理记录的参数说明

    在MySql提供慢查询日志来定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预...

  • redis慢查询

    当redis命令执行时间大于设置的时间,redis会将此命令标记为慢查询,并记录到慢查询d日志队列中 redis命...

  • Redis和Mongodb查看慢查询

    1. Redis查看慢查询: Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过...

  • redis 学习(10)-- redis 慢查询

    redis 慢查询 什么是慢查询 MySQL会记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为...

  • Redis的实用小技巧,让你的缓存不再有压力!

    Redis实用技巧 慢日志查询分析 Redis的慢日志查询功能用于记录执行时间超过给定时长的命令,用户可以通过这个...

  • redis慢查询

    在redis中慢查询是用于记录那些超过给定时长的命令请求,用户可以通过查看慢查询日志来优化处理产生慢查询的命令。在...

  • MySQL性能优化 - 慢查询日志

    1. 慢查询日志概述 说明 该日志记录执行时间超过阈值的SQL语句注意:慢查询日志并不仅仅只记录select,up...

  • 第四章:Redis 慢查询日志系统

    一、慢查询说明 慢查询日志, 是系统记录那些超过指定查询时间的日志,查询时间指的是单个命令占用CPU处理时间。不包...

  • redis慢查询

    对于慢查询功能,需要明确两件事: 预设阀值怎么设置? 慢查询记录存放在哪? Redis提供了slowlog-log...

  • MySQL慢查询分析

    开启慢查询日志 慢查询时长设置 开启后重连 记录到表 记录未使用索引的查询 测试 慢查询分析 得到返回记录集最多的...

网友评论

    本文标题:redis慢查询记录的搭建和管理记录的参数说明

    本文链接:https://www.haomeiwen.com/subject/ksftlqtx.html