searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Redis慢日志原理及归档查询方案

2023-10-17 03:25:38
16
0

Redis慢日志

redis慢日志也就是redis慢查询日志。慢查询是指用户指令在redis引擎端执行时间较长的查询,统计慢查询的时间是指指令的执行时间,并不包含客户端的网络传输和排队等待时间。
 
慢查询日志是Redis引擎端在命令执行前后计算每条命令的执行时长,当超过指定阈值时记录下来的日志。日志中记录了慢查询发生的时间,还有执行时长、具体指令等信息,用来帮助开发和运维人员定位系统中存在的慢查询。

慢日志实现逻辑

redis引擎执行指令时都会记录开始执行时间以及结束时间,当指令执行耗时超过设置的阈值且内存中慢日志记录条数小于设置的最大条数时,会记录下该指令的slowlog格式数据。

慢日志操作指令

针对慢日志功能,redis提供具体指令操作慢日志接口,包括查询慢日志记录、清理慢日志以及配置慢日志参数。
 

查询慢日志记录

可以使用 slowlog get 指令获取慢查询日志,还可以加一个数字,用于指定获取慢查询日志的条数。另外,也支持查询当前系统中包含的慢日志条数。
 
> slowlog len
(integer) 12

> slowlog get 2
1) 1) (integer) 126
2) (integer) 1613704108
3) (integer) 46004
4) 1) "flushall"
2) 1) (integer) 125
2) (integer) 1608705338
3) (integer) 30449
4) 1) "scan"
2) "0"
3) "MATCH"
4) "*comment*"
5) "COUNT"
6) "10000"
 
可以看出每一条慢查询日志都有4个属性组成:
  1. - 唯一标识ID
  2. - 命令执行的时间戳
  3. - 命令执行时长
  4. - 执行的命名和参数

清理慢日志

所有的慢日志记录都保存在内存中,当记录的数量达到最大条数,如果还有新慢日志写入,最早的旧记录会被清理,为新记录腾出空间。
 
在做慢日志归档时,应尽量避免日志写满被动清理,定时读取慢日志,同时清理系统内存中的日志记录。
 
> slowlog len
(integer) 11
> slowlog reset
OK
> slowlog len
(integer) 0
 
 

配置慢日志参数

根据上述功能,慢日志需要下面两个配置:
- 指令执行时长的指定阈值,slowlog-log-slower-than
- 存放慢查询日志的条数,slowlog-max-len
 
slowlog-log-slower-than的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认是10000微秒。
 
slowlog-max-len的作用是指定慢查询日志最多存储的条数。Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已经达到最大长度时,最早插入的那条命令将被从列表中移出。
 
慢日志的两个参数都可以通过 config 指令查询和设置,注意修改配置后需要使用rewrite持久化保存配置值
 
> config get slowlog-log-slower-than
(integer) 10000
> config get slowlog-max-len
(inter) 100
> config set slowlog-log-slower-than 1000000
OK
> config set slowlog-max-len 120
OK
>
config rewrite
OK
 

慢日志归档及查询功能

 
通过前端页面向终端用户提供慢日志功能,管控组件需要支持redis慢日志归档存储和提供过滤查询能力,以及在实例参数配置中提供慢日志相关参数的配置发布能力。
 

慢日志参数配置

在使用慢日志功能时,需要关注慢日志相关的配置参数。在实例参数配置页面,设置slowlog-log-slower-than和slowlog-max-len参数对应的值,设置完成后,会影响到系统后续的慢日志记录,按最新的配置值记录慢日志,但不会影响到参数配置前的慢日志。

慢日志归档存储

通过周期任务,定时查询实例节点的慢日志,查询后清理,保存查询记录到管控元数据数据库中,慢日志记录存储字段包括:
 
记录标识ID 执行时间戳 执行耗时 指令及参数 读写标识 数据类型 实例ID
 
PS:系统需要有慢日志数据清理动作,清理记录时间较久远的慢日志记录。

慢日志过滤查询

完成慢日志记录后就可以提供慢日志查询功能,可以支持按指令、数据类型、读写等维度过滤查询。
0条评论
作者已关闭评论
1****m
13文章数
0粉丝数
1****m
13 文章 | 0 粉丝
原创

Redis慢日志原理及归档查询方案

2023-10-17 03:25:38
16
0

Redis慢日志

redis慢日志也就是redis慢查询日志。慢查询是指用户指令在redis引擎端执行时间较长的查询,统计慢查询的时间是指指令的执行时间,并不包含客户端的网络传输和排队等待时间。
 
慢查询日志是Redis引擎端在命令执行前后计算每条命令的执行时长,当超过指定阈值时记录下来的日志。日志中记录了慢查询发生的时间,还有执行时长、具体指令等信息,用来帮助开发和运维人员定位系统中存在的慢查询。

慢日志实现逻辑

redis引擎执行指令时都会记录开始执行时间以及结束时间,当指令执行耗时超过设置的阈值且内存中慢日志记录条数小于设置的最大条数时,会记录下该指令的slowlog格式数据。

慢日志操作指令

针对慢日志功能,redis提供具体指令操作慢日志接口,包括查询慢日志记录、清理慢日志以及配置慢日志参数。
 

查询慢日志记录

可以使用 slowlog get 指令获取慢查询日志,还可以加一个数字,用于指定获取慢查询日志的条数。另外,也支持查询当前系统中包含的慢日志条数。
 
> slowlog len
(integer) 12

> slowlog get 2
1) 1) (integer) 126
2) (integer) 1613704108
3) (integer) 46004
4) 1) "flushall"
2) 1) (integer) 125
2) (integer) 1608705338
3) (integer) 30449
4) 1) "scan"
2) "0"
3) "MATCH"
4) "*comment*"
5) "COUNT"
6) "10000"
 
可以看出每一条慢查询日志都有4个属性组成:
  1. - 唯一标识ID
  2. - 命令执行的时间戳
  3. - 命令执行时长
  4. - 执行的命名和参数

清理慢日志

所有的慢日志记录都保存在内存中,当记录的数量达到最大条数,如果还有新慢日志写入,最早的旧记录会被清理,为新记录腾出空间。
 
在做慢日志归档时,应尽量避免日志写满被动清理,定时读取慢日志,同时清理系统内存中的日志记录。
 
> slowlog len
(integer) 11
> slowlog reset
OK
> slowlog len
(integer) 0
 
 

配置慢日志参数

根据上述功能,慢日志需要下面两个配置:
- 指令执行时长的指定阈值,slowlog-log-slower-than
- 存放慢查询日志的条数,slowlog-max-len
 
slowlog-log-slower-than的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认是10000微秒。
 
slowlog-max-len的作用是指定慢查询日志最多存储的条数。Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已经达到最大长度时,最早插入的那条命令将被从列表中移出。
 
慢日志的两个参数都可以通过 config 指令查询和设置,注意修改配置后需要使用rewrite持久化保存配置值
 
> config get slowlog-log-slower-than
(integer) 10000
> config get slowlog-max-len
(inter) 100
> config set slowlog-log-slower-than 1000000
OK
> config set slowlog-max-len 120
OK
>
config rewrite
OK
 

慢日志归档及查询功能

 
通过前端页面向终端用户提供慢日志功能,管控组件需要支持redis慢日志归档存储和提供过滤查询能力,以及在实例参数配置中提供慢日志相关参数的配置发布能力。
 

慢日志参数配置

在使用慢日志功能时,需要关注慢日志相关的配置参数。在实例参数配置页面,设置slowlog-log-slower-than和slowlog-max-len参数对应的值,设置完成后,会影响到系统后续的慢日志记录,按最新的配置值记录慢日志,但不会影响到参数配置前的慢日志。

慢日志归档存储

通过周期任务,定时查询实例节点的慢日志,查询后清理,保存查询记录到管控元数据数据库中,慢日志记录存储字段包括:
 
记录标识ID 执行时间戳 执行耗时 指令及参数 读写标识 数据类型 实例ID
 
PS:系统需要有慢日志数据清理动作,清理记录时间较久远的慢日志记录。

慢日志过滤查询

完成慢日志记录后就可以提供慢日志查询功能,可以支持按指令、数据类型、读写等维度过滤查询。
文章来自个人专栏
后端研发
13 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0