甚么是慢查询?
慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令履行的全部进程:
在慢查询的定义中,统计比较慢的时间段指的是命令履行这个步骤。没有慢查询,其实不表示客户端没有超时问题,有可能网络传输有延迟,也有可能排队的命令比较多。
由于Redis中命令履行的排队机制,慢查询会致使其他命令的级联阻塞,所以当客户端出现要求超时的时候,需要检查该时间点会不会有慢查询,从而分析出由于慢查询致使的命令级联阻塞。
甚么是慢查询日志?
慢查询日志是Redis服务端在命令履行前后计算每条命令的履行时长,当超过某个阈值是记录下来的日志。日志中记录了慢查询产生的时间,还有履行时长、具体甚么命令等信息,它可以用来帮助开发和运维人员定位系统中存在的慢查询。
如何获得慢查询日志?
可使用slowlog get
命令获得慢查询日志,在slowlog get
后面还可以加一个数字,用于指定获得慢查询日志的条数,比如,获得3条慢查询日志:
> slowlog get 3
1) 1) (integer) 6107
2) (integer) 1616398930
3) (integer) 3109
4) 1) “config”
2) “rewrite”
2) 1) (integer) 6106
2) (integer) 1613701788
3) (integer) 36004
4) 1) “flushall”
3) 1) (integer) 6105
2) (integer) 1608722338
3) (integer) 20449
4) 1) “scan”
2) “0”
3) “MATCH”
4) “*comment*”
5) “COUNT”
6) “10000”
从上面的例子中,可以看出每条慢查询日志都有4个属性组成:
- 唯一标识ID
- 命令履行的时间戳
- 命令履行时长
- 履行的命名和参数
如何获得慢查询日志的长度?
可使用slowlog len
命令获得慢查询日志的长度,比如:
> slowlog len
(integer) 121
在上例中,当前Redis中有121条慢查询日志。
如何清算慢查询日志?
可使用slowlog reset
命令清算慢查询日志,比如:
> slowlog len
(integer) 121
> slowlog reset
OK
> slowlog len
(integer) 0
怎样配置慢查询的参数?
正如上面提到的,慢查询需要以下两个配置:
Redis对应提供了两个参数:slowlog-log-slower-than和slowlog-max-len,接下来我们详细介绍一下这两个参数。
slowlog-log-slower-than
slowlog-log-slower-than的作用是指定命令履行时长的阈值,履行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默许是10000微秒。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。如果把slowlog-log-slower-than设置小于0,将会不记录任何命令到日志中。
在实际的生产环境中,需要根据Redis并发量来调剂该配置。由于Redis采取单线程响应命令,如果命令履行时间在1000微秒以上,那末Redis最多可支持OPS不到1000,所以对高并发场景的Redis建议设置为1000微秒。
slowlog-max-len
slowlog-max-len的作用是指定慢查询日志最多存储的条数。实际上,Redis使用了一个列表寄存慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已到达最大长度时,最早插入的那条命令将被从列表中移出。比如,slowlog-max-len被设置为10,当有第11条命令插入时,在列表中的第1条命令先被移出,然后再把第11条命令放入列表。
记录慢查询是Redis会对长命令进行截断,不会大量占用大量内存。在实际的生产环境中,为了减缓慢查询被移出的可能和更方便地定位慢查询,建议将慢查询日志的长度调剂的大一些。比如可以设置为1000以上。
如何进行配置
在Redis中有两个修改配置的方法:
slowlog-log-slower-than 1000
slowlog-max-len 1200
修改Redis配置文件。比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
使用config set
命令动态修改。比如,或者把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
> config set slowlog-log-slower-than 1000
OK
> config set slowlog-max-len 1200
OK
> config rewrite
OK
如果要Redis把配置持久化到本地配置文件,需要履行config rewrite
命令。
总结
慢查询指的是命令履行时长比较长的查询。通过slowlog get命令获得慢查询日志;通过slowlog len命令获得慢查询日志的长度;通过slowlog reset命令清算慢查询日志。通过slowlog-log-slower-than配置命令履行时长的阈值;通过slowlog-max-len配置慢查询日志最多存储的条数。
到此这篇关于一分钟弄懂Redis的慢查询日志操作的文章就介绍到这了,更多相关Redis 慢查询内容请搜索之前的文章或继续浏览下面的相关文章希望大家以后多多支持!
文章来源:丸子建站
文章标题:一分钟弄懂Redis的慢查询日志操作
https://www.wanzijz.com/view/68876.html