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

    1. 127.0.0.1:6379> slowlog get 2
    2. 1) 1) (integer) 4
    3. 2) (integer) 1607418582
    4. 3) (integer) 663636
    5. 4) 1) "FLUSHALL"
    6. 5) "127.0.0.1:59982"
    7. 6) ""
    8. 2) 1) (integer) 3
    9. 2) (integer) 1607418537
    10. 3) (integer) 1126063
    11. 4) 1) "dbsize"
    12. 5) "127.0.0.1:59982"
    13. 6) ""
    14. 127.0.0.1:6379>
  • LEN: 用于获取当前慢查询日志总数目

    1. 127.0.0.1:6379> SLOWLOG len
    2. (integer) 5
    3. 127.0.0.1:6379>
  • RESET: 清空所有的慢查询日志

    1. 127.0.0.1:6379> SLOWLOG RESET
    2. OK
    3. 127.0.0.1:6379> SLOWLOG GET
    4. (empty list or set)
    5. 127.0.0.1:6379> SLOWLOG LEN
    6. (integer) 0
    7. 127.0.0.1:6379>

慢查询日志输出格式

​ 由于Tendis存储版支持内存慢查询日志和慢查询日志落盘, 此处列出两种输出格式及其含义.

  1. SLOWLOG GET [COUNT]输出格式

    输出慢查询日志是最常用的方式,输出格式如下:

    1. 1) 1) (integer) 4
    2. 2) (integer) 1607418582
    3. 3) (integer) 663636
    4. 4) 1) "FLUSHALL"
    5. 5) "127.0.0.1:59982"
    6. 6) ""
    7. 2) 1) (integer) 3
    8. 2) (integer) 1607418537
    9. 3) (integer) 1126063
    10. 4) 1) "dbsize"
    11. 5) "127.0.0.1:59982"
    12. 6) ""

    如上述格式所示:

    • slowlog-id, 在”Tendis存储版”运行期间自增id唯一,只有重启”Tendis存储版”才会重置id
    • timestamp, 慢查询日志产生的时间
    • amount-time, 执行命令耗时, 单位为微秒
    • command, 命令参数array
    • ip-port, 发起命令的client地址端口
    • client-name, 如果使用CLIENT SETNAME进行客户端指名
  2. 写入文件的slowlog输出格式

    1. # Id: 0
    2. # Timestamp: 1606742921364008
    3. # Time: 201130 21:28:41
    4. # Host: 127.0.0.1:56452
    5. # Db: 0
    6. # Query_time: 633472
    7. [] flushall
    8. # Id: 0
    9. # Timestamp: 1606813355094135
    10. # Time: 201201 17:02:35
    11. # Host: 127.0.0.1:39417
    12. # Db: 0
    13. # Query_time: 626867
    14. [] dbsize

    如上所示:

    • slowlog id
    • slowlog时间戳
    • slowlog产生时间,可读性较高,方便进行debug
    • slowlog查询命令的客户端地址端口
    • db的id
    • 查询时间,单位是微秒μs
    • 记录慢查询命令