Slowlog慢查询日志
简介
慢查询日志是用来进行运维监控命令执行的功能, 语义同Redis slowlog慢查询日志相同。慢查询日志用来记录命令执行的时间,不包括和redis-client
交互, 发送响应消息等I/O时间,仅仅是命令实际执行的时间。换句话讲,即线程被阻塞住,不能响应其他命令请求的时间。
较Redis的纯内存慢查询日志, “Tendis存储版”可以将慢查询日志定期写入文件,方便后续定位问题。相关的配置项参见下述
参数配置
慢查询日志需要在配置文件中进行参数配置,配置项如下:
配置项 | 含义 | 备注 |
---|---|---|
slowlog | 慢查询日志路径 | 配置方法同logdir, 不能是无效目录或DB目录 |
slowlog-log-slower-than | 慢查询时间标准 | 单位是微妙μs, Redis慢查询单位是毫秒ms |
slowlog-max-len | 慢查询日志数目 | 无 |
slowlog-flush-interval | 慢查询日志写入文件间隔 | 非时间间隔,数目间隔,没产生指定数目慢查询日志即写入 |
slowlog-file-enabled | 慢查询日志文件名 | 文件名配置则会写入,否则仅为内存慢查询日志 |
以上参数需要在配置文件中配置,且支持运行时动态调整, 使用config set
, config get
命令进行动态修改。
slowlog命令参数
在使用慢查询日志功能时, slowlog
命令支持下述子命令subcommand
:
GET [count]
: 用于获取指定数目的慢查询日志, 默认count = 10
127.0.0.1:6379> slowlog get 2
1) 1) (integer) 4
2) (integer) 1607418582
3) (integer) 663636
4) 1) "FLUSHALL"
5) "127.0.0.1:59982"
6) ""
2) 1) (integer) 3
2) (integer) 1607418537
3) (integer) 1126063
4) 1) "dbsize"
5) "127.0.0.1:59982"
6) ""
127.0.0.1:6379>
LEN
: 用于获取当前慢查询日志总数目127.0.0.1:6379> SLOWLOG len
(integer) 5
127.0.0.1:6379>
RESET
: 清空所有的慢查询日志127.0.0.1:6379> SLOWLOG RESET
OK
127.0.0.1:6379> SLOWLOG GET
(empty list or set)
127.0.0.1:6379> SLOWLOG LEN
(integer) 0
127.0.0.1:6379>
慢查询日志输出格式
由于Tendis存储版
支持内存慢查询日志和慢查询日志落盘, 此处列出两种输出格式及其含义.
SLOWLOG GET [COUNT]
输出格式输出慢查询日志是最常用的方式,输出格式如下:
1) 1) (integer) 4
2) (integer) 1607418582
3) (integer) 663636
4) 1) "FLUSHALL"
5) "127.0.0.1:59982"
6) ""
2) 1) (integer) 3
2) (integer) 1607418537
3) (integer) 1126063
4) 1) "dbsize"
5) "127.0.0.1:59982"
6) ""
如上述格式所示:
- slowlog-id, 在”Tendis存储版”运行期间自增id唯一,只有重启”Tendis存储版”才会重置id
- timestamp, 慢查询日志产生的时间
- amount-time, 执行命令耗时, 单位为微秒
- command, 命令参数array
- ip-port, 发起命令的client地址端口
- client-name, 如果使用
CLIENT SETNAME
进行客户端指名
写入文件的slowlog输出格式
# Id: 0
# Timestamp: 1606742921364008
# Time: 201130 21:28:41
# Host: 127.0.0.1:56452
# Db: 0
# Query_time: 633472
[] flushall
# Id: 0
# Timestamp: 1606813355094135
# Time: 201201 17:02:35
# Host: 127.0.0.1:39417
# Db: 0
# Query_time: 626867
[] dbsize
如上所示:
- slowlog id
- slowlog时间戳
- slowlog产生时间,可读性较高,方便进行debug
- slowlog查询命令的客户端地址端口
- db的id
- 查询时间,单位是微秒μs
- 记录慢查询命令