阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

关于 Redis慢日志

121次阅读
没有评论

共计 1206 个字符,预计需要花费 4 分钟才能阅读完成。

简介

慢日志 (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 以上。

示例:

CONFIG SET slowlog-log-slower-than 10000
CONFIG SET slowlog-max-len 128

查询是否生效,可以使用 CONFIG GET 命令:

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 命令:

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"

该命令如果不给参数,则打印出所有慢查询命令。

现在按结果集顺序讲解一下输出的结果含义:

    1. 唯一性 (unique) 的日志标识符。日志的唯一 id 只有在 Redis 服务器重启的时候才会重置,这样可以避免对日志的重复处理。
    1. 被记录命令的执行时间点,以 UNIX 时间戳格式表示
    1. 查询执行时间,单位为微秒
    1. 执行的命令,以数组的形式排列

如果仅需要知道当前慢查询的数量,则使用命令 SLOWLOG LEN 即可:

127.0.0.1:6379> SLOWLOG LEN
(integer) 128

使用命令 SLOWLOG RESET 可以清空 慢日志 :

127.0.0.1:6379> SLOWLOG RESET
OK

提示:慢查询较多的情况下,可能会丢失部分慢查询命令,可以定期执行 SLOWLOG GET 命令将慢查询日志持久化到其他存储 (例如 ES) 中。然后制作可视化界面查询。

关于 Redis 慢日志

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1206字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中