定义
-
命令执行时间超过指定阈值。
步骤(客户端执行命令)
-
客户端执行一条命令周期:发送命令->排队->执行命令->返回结果
注意:慢查询时间只包含执行命令时间,没有慢查询不代表客户端不会超时
配置项
- Redis慢查询配置项:slowlog-log-slower-than和slowlog-max-len
- slowlog-log-slower-than就是预设阈值,单位微秒(1秒=1000毫秒=1000000微秒),默认10000;slowlog-log-slower-than = 0 表示redis会记录所有执行命令,slowlog-log-slower-than < 0 表示redis不会记录任何执行命令记录;生产环境中建议设置1000;
127.0.0.1:6379> CONFIG GET slowlog-log-slower-than 1) "slowlog-log-slower-than" 2) "10000"
- slow-max-len 设置储存慢查询记录列表大小,默认值128,若该列表超过128条,将最早的记录先清除;生产环境中建议设置1000,这样有更多的记录可供分析;
config get slowlog-max-len 1) "slowlog-max-len" 2) "128"
- 配置项设置。一种在redis配置文件中修改slowlog-log-slower-than和slowlog-max-len项;第二种就是动态配置
config set slowlog-log-slower-than 1000 config set slowlog-max-len 1000 config rewrite
慢查询操作
- slowlog get [n] ,可选项n表示显示几条
127.0.0.1:6379> slowlog get 1 1) 1) (integer) 2 2) (integer) 1562292695 3) (integer) 18534 4) 1) "COMMAND" 5) "127.0.0.1:29138" 6) "" 1) 慢查询记录唯一ID 2) 命令执行时间戳 3) 执行时间,单位微秒 4) 1) 执行的命令 5) 客户端网络套接字(ip: port) 6) ""
- 查询当前慢查询记录数
127.0.0.1:6379> slowlog len (integer) 3
-
重置慢查询日志
127.0.0.1:6379> slowlog reset OK 127.0.0.1:6379> slowlog len (integer) 0