Redis 慢日志介绍

作者: 天天向上卡索 | 来源:发表于2018-06-22 14:41 被阅读1次

    Intro

    可能有一些命令需要很长时间才能在redis服务器上处理,导致请求超时。 长时间运行的命令的很少例子有 mget有大量的键,键*或写得不好的lua脚本。 可以运行通过 SlowLog 命令查看是否有请求花费比预期更长的时间。

    Redis 慢日志概览

    Redis Slow Log 是一个系统,用于记录超过指定执行时间的查询。执行时间不包括I / O操作,如与客户端交谈,发送回复等等,但只是实际执行命令所需的时间(这是执行命令的唯一阶段,其中线程被阻止并且不能同时服务于其他请求)。

    您可以使用两个参数配置慢日志:

    • slowlog-log-slow-than 告诉 Redis 为了记录命令,执行时间(微秒)超过了多少。请注意,负数将禁用慢日志,而值为零将强制记录每条命令。
      slowlog-max-len 是慢日志的长度。最小值为零。当记录新的命令并且慢日志已经处于其最大长度时,为了留出空间,将最老的命令从记录的命令队列中移除。

    配置可以通过编辑 redis.conf 或服务器运行时使用 CONFIG GETCONFIG SET 命令来完成。

    查看慢日志

    慢日志在内存中累积,因此没有写入关于慢命令执行信息的文件。这使得日志记录非常快,可以启用所有命令的日志记录(将slowlog-log-slow- config配置参数设置为零),同时影响较小。

    要读取慢日志,使用SLOWLOG GET命令,该命令将返回慢日志中的每个条目。可以仅返回N个最近的条目,并将其他参数传递给该命令(例如SLOWLOG GET 10)。

    请注意,为了读取慢日志输出,您需要使用 redis-cli 的最新版本,因为它使用了以前在 redis-cli 中执行的一些协议功能(深度嵌套的多批量响应)

    输出格式

    redis 127.0.0.1:6379> slowlog get 2
    1) 1) (integer) 14
       2) (integer) 1309448221
       3) (integer) 15
       4) 1) "ping"
    2) 1) (integer) 13
       2) (integer) 1309448128
       3) (integer) 30
       4) 1) "slowlog"
           2) "get"
           3) "100"
    

    每个条目由四个字段组成:

    • 每个慢日志条​​目的唯一渐进标识符。
    • 处理记录的命令的UNIX时间戳。
    • 执行所需的时间量,以微秒为单位。
    • 组成命令参数的数组。

    该条目的唯一ID可用于避免多次处理缓慢的日志条目(例如,您可能有一个脚本为每个新的慢日志条目发送电子邮件警报)。

    在 Redis 服务器执行过程中,ID永远不会被重置,只有服务器重启才会重置它。

    获取慢日志的当前数量

    使用命令 SLOWLOG LEN 可以获得慢日志的长度 。

    重置慢日志

    你可以使用 SLOWLOG RESET 命令重置慢日志。一旦删除,信息将永远丢失。

    Reference

    相关文章

      网友评论

        本文标题:Redis 慢日志介绍

        本文链接:https://www.haomeiwen.com/subject/eaukyftx.html