redis 慢日志
慢日志即是对用户请求响应慢,或执行慢的日志记录, 这里的慢是相对概念,慢即是指超过一定阈值,
当超过预设阈值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录到慢查询日志中,
在redis中也提供量类似于mysql的慢日志,慢日志可以帮助运维人员,开发人员定位系统慢操作。
参数设置:
与慢日志有关的参数主要涉及两个参数:
- slowlog-log-slower-than 预设阈值,它的单位是毫秒(1秒=1000000微秒)默认值是10000
- slowlog-max-len 最多存储多少条的慢日志记录
慢日志存储位置,实际上在内存中,redis使用一个列表来存储慢日志, slowlog-max-len 就是这个列表的
最大长度, 一个新的命令满足慢查询条件时被插入到这个列表中,当慢查询日志列表已处于其最大长度时,
最早插入的一个命令将从列表中移出 即 采用FIFO先进先出的方式
如果slowlog-log-slower-than=0 则会记录所有的命令, 而小于0的时候对于任何命令不做记录
配置修改:
- 修改启动配置文件
- config set 命令动态修改
config set slowlog-log-slower-than 20000
config set slowlog-max-len 500
config rewrite (写入本地配置文件)
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"
127.0.0.1:6379>
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-
127.0.0.1:6379> config set slowlog-max-len 500
OK
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "500"
redis的慢日志存放在redis的内存列表中,但是并没有提供可以直接查询该列表的key
但是可以通过命令获取:
slowlog get [ n] n是指定条数
慢日志长度:
slowlog len
清理慢日志:
slowlog reset
127.0.0.1:6379> slowlog get
(empty list or set)
127.0.0.1:6379> slowlog len
(integer) 0
慢查询日志记录命令 id、发生时间戳、命令耗时、执行命令和参数
慢日志列表 slowlog-max-len 建议调大, 保留更多的慢日志操作,方便查询问题, redis对于长命令的操作也会做截断
操作,不会占用大量内存
slowlog-log-slower-than 值根据实际业务要求进行设置,由于redis是单线程操作,因此很好计算
例如:
设置1毫秒, 如果命令操作大于1毫秒, 那么每秒响应小于1000,即ops不到1000
慢查询记录的是命令执行时间,对于网络传输延迟,命令排队执行时间,并不包含,因此客服端发起执行到获取结果,
会大于执行时间, 慢查询会导致其他命令注射,可能造成超时, 影响应用响应时间,严重的时候可能造成应用故障
慢查询采用FIFO, 保存的记录有限,可以定时执行slow get命令,保存到文件中,方便后面查询问题