• 轻松使用 Redis slowlog


    之前中秋项目搞活动,用户比较活跃 SE.Redis 频繁报 Timeout 异常,狂翻了一波 issues 发现提这个问题还蛮多的,作者非常频繁的提到使用 slowlog 这个命令进行排查,那么问题就来了,它是干嘛滴?

    Redis slowlog 是个什么

    使用这个命令可以读取或重置 Redis 慢速查询日志。通俗讲就是 redis 可以把执行时间超过我们设定值的命令记录下来,slowlog 是记录到内存中的哦,所以非常快。

    这里的执行时间不包括 I/O 操作,比如与客户端,发送应答等等,就是实际执行命令所需的时间(命令唯一执行的阶段,线程被阻塞且不能同时处理其他请求)。

    设置 Redis slowlog

    两种方式:

    1. 可以通过配置 redis.conf 来完成。
    2. 运行时,使用 CONFIG GET 和 CONFIG SET 命令配置。

    这里我们主要说的是第二种方式,您可以使用两个参数来配置慢日志:slowlog-log-slow-than * ,告诉 Redis, 记录超过 * 微秒 内的命令执行情况。

    需要注意的是,设置负数表示禁用 slowlog ,而设置 0 则强制记录每个命令的执行情况。
    以下是 slowlog 的设置使用说明:

    redis 127.0.0.1:6379>config set slowlog-log-slower-than 10000
    "OK"

    redis 127.0.0.1:6379>config get slowlog-log-slower-than
    1)  "slowlog-log-slower-than"
    2)  "10000"

    那么问题又来了,slowlog 是记录再内存中的,如果记录所有的命令 log 会不会把内容撑爆呢?

    答案是当然不会。slowlog 记录的 log 数是有最大长度限制的,我们可以通过 slowlog-max-len 来查询 slowlog 的最大长度。最小值为零。当一个新的命令被记录下来,并且如果已经达到它的最大长度时,最老的一个 log 将从队列中删除,FIFO 。

    另外,使用 slowlog len 命令可以查看当前已记录的数量。
    使用 slowlog reset 重置已记录的 slowlog 信息。

    如何阅读 slowlog

    我们已经了解 slowlog 是记录在内存中的,所以您可以启用所有命令的日志记录即 slowlog-log-slow-than 配置参数设置为 0 便于监测性能。

    要读取 slowlog,使用 SLOWLOG GET 获取命令,它返回慢日志中的每一个条目。可以只返回N个最近的条目,将一个附加参数传递给命令(例如 SLOWLOG GET 2)。

    redis 127.0.0.1:6379> slowlog get 2
        11) (integer) 14             //slowlog 唯一标识
           2) (integer) 1309448221     //unix 时间戳
           3) (integer) 15             //命令执行的时间,单位:微秒
           41"ping"                //具体执行的命令,最多记录128
        21) (integer) 13
           2) (integer) 1309448128
           3) (integer) 30
           41"slowlog"
              2"get"
              3"100"

    //其中 Redis 4.0 及以上版本还包含以下两部分:

           5"127.0.0.1:58217"         //客户端IP:Port
           6"worker-123"              //客户端名称

    最后,需要注意此命令需要 2.2.12及以上版本的 redis 才能支持。

  • 相关阅读:
    Ext js必包含的几个文件
    设计模式之三:装饰者模式(简单实现(星巴兹咖啡))
    SQLSERVER排查CPU占用高的情况
    函数题练习52找两个数中最大者
    函数题练习53数字金字塔
    JavaScript面向对象tab栏增删改查操作
    JavaScriptObject.defineProperty方法
    Javascript面向对象迭代forEach、some、filter方法以及查询商品案例
    函数题练习51符号函数
    Javascript构造函数和原型
  • 原文地址:https://www.cnblogs.com/Nuss/p/9784732.html
Copyright © 2020-2023  润新知