Redis慢日志
慢日志(Slow log) 是 Redis 用来记录命令执行时间的日志系统。例如线上Redis突然出现堵塞,使用该命令可以查询Redis服务器耗时的命令列表,快速定位问题。
由于慢日志是存储于内存的,读写速度非常快,不用担心因为使用慢日志而造成性能问题。
可用版本: >= 2.2.12
时间复杂度: O(1)
如何配置
2种配置方法。第一种是修改redis.conf
配置文件,第二种则是使用CONFIG SET
动态修改。
需要配置的参数:
slowlog-log-slower-than
配置对执行时间大于多少微秒(microsecond, 1秒=10^6微秒) 的命令进行记录。线上可以设置为1000微秒,也就是1毫秒。slowlog-max-len
设置最大考验记录多少条记录。 slow log 本身是一个先进先出(FIFO) 队列,当队列大小超过该配置的值时,最旧的一条日志将被删除。线上可以设置为1000以上。
示例:
Copy
CONFIG SET slowlog-log-slower-than 10000 CONFIG SET slowlog-max-len 128
查询是否生效,可以使用CONFIG GET
命令:
Copy
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"
查询慢日志
查询很简单,使用SLOWLOG GET
命令:
Copy
127.0.0.1:6379> SLOWLOG GET 2 1) 1) (integer) 207 2) (integer) 1582875104 3) (integer) 98977 4) 1) "SPOP" 2) "wt_pre_room_wxids" 2) 1) (integer) 206 2) (integer) 1582875103 3) (integer) 501649 4) 1) "SPOP" 2) "wt_bind_user_wxids"
该命令如果不给参数,则打印出所有慢查询命令。
现在按结果集顺序讲解一下输出的结果含义:
- 唯一性(unique)的日志标识符。日志的唯一 id 只有在 Redis 服务器重启的时候才会重置,这样可以避免对日志的重复处理。
- 被记录命令的执行时间点,以 UNIX 时间戳格式表示
- 查询执行时间,单位为微秒
- 执行的命令,以数组的形式排列
如果仅需要知道当前慢查询的数量,则使用命令SLOWLOG LEN
即可:
Copy
127.0.0.1:6379> SLOWLOG LEN (integer) 128
使用命令 SLOWLOG RESET
可以清空 慢日志 :
Copy
127.0.0.1:6379> SLOWLOG RESET OK
提示:慢查询较多的情况下,可能会丢失部分慢查询命令,可以定期执行 SLOWLOG GET命令将慢查询日志持久化到其他存储(例如ES)中。然后制作可视化界面查询。
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04