之前中秋项目搞活动,用户比较活跃 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
    1) 1) (integer) 14             //slowlog 唯一标识
       2) (integer) 1309448221     //unix 时间戳
       3) (integer) 15             //命令执行的时间,单位:微秒
       4) 1) "ping"                //具体执行的命令,最多记录128
    2) 1) (integer) 13
       2) (integer) 1309448128
       3) (integer) 30
       4) 1) "slowlog"
          2) "get"
          3) "100" //其中 Redis 4.0 及以上版本还包含以下两部分:        5) "127.0.0.1:58217"         //客户端IP:Port
       6) "worker-123"              //客户端名称

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

轻松使用 Redis slowlog的更多相关文章

  1. Redis slowlog

    和mongo的slowlog一样,redis中对于操作时间较长(默认为10秒)的命令也会记录下来,不过它将它们保存在redisServer结构中的slowlog这个链表中,新进来的log排在链表头部, ...

  2. Redis slowlog慢查询

    slowlog (阅读原文) 此命令用于读取和重置redis慢请求日志 redis slow log概述 redis的slow log记录了那些执行时间超过规定时长的请求.执行时间不包括I/O操作(比 ...

  3. redis slowlog 慢查询日志

    设置 config set slowlog-log-slower-than 10000(微秒) //查看redis时间超过上面设置的阀值的key slowlog len 有几个key slowlog ...

  4. 1、redis 基础

    1.1 导言 如果你从来没使用过 Redis 数据库,那你肯定会问,为什么我们要学 Redis数据库,我只使用 MySQL 或 Oracle 就够了.其实 Redis 虽叫数据库,可又不是传统意义上的 ...

  5. redis安装与介绍

    安装 一般推荐次新版的最后一个发行版.https://redis.io/download 先安装gcc, yum install gcc tar xzf redis-3.2.3.tar.gz cd r ...

  6. Redis慢链接查看

    设置定义慢日志(小于n微秒的定义为慢日志):CONFIG SET slowlog-log-slower-than n 注:1秒 = 1,000,000微秒设置服务器保存的慢日志最多条数:config ...

  7. PHP Redis 全部操作方法

    Classes and methods Usage Class Redis Class RedisException Predefined constants Class Redis Descript ...

  8. redis状态查看

      https://redis.readthedocs.org/en/latest/server/slowlog.html   https://redis.readthedocs.org/en/lat ...

  9. redis专题--slow log详解

    SLOWLOG subcommand [argument] 什么是 SLOWLOG Slow log 是 Redis 用来记录查询执行时间的日志系统. 查询执行时间指的是不包括像客户端响应(talki ...

随机推荐

  1. webpack 读取文件变量

    1.webpack 获取文件中变量 <%= htmlWebpackPlugin.options.title %> <p><%= htmlWebpackPlugin.opt ...

  2. C#中Request.Cookies 和 Response.Cookies 的区别分析

    .NET中提供了读写Cookie的多种方法,Request.Cookies 是客户端通过 Cookie 标头形式由客户端传输到服务器的 Cookie:Response.Cookies 在服务器上创建并 ...

  3. day01-Python介绍,安装,idea

    一. python 简介 Python,读作['paɪθɑn],翻译成汉语是蟒蛇的意思,Python 的 logo 也是两条缠绕在一起的蟒蛇的样子,然而 Python 语言和蟒蛇实际上并没有一毛钱关系 ...

  4. SPOJ 7258 SUBLEX 后缀数组 + 二分答案 + 前缀和

    Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...

  5. js对浏览器产生的影响

     Js 是单线程执行引擎.在我们动态修改一些属性时会产生两种效果:    1.Repaint ----- 一部分重画,修改 div 的颜色呀,但是尺寸没有改变.    2.Reflow ---- 元素 ...

  6. JavaScript:理解prototype与__proto__,原型与原型链

    JS中的继承是原型继承,通过原型实现的.为了理解原型,我想先讲讲对象的内部属性[[prototype]]和属性__proto__,函数的属性prototype. 对象的内部属性[[prototype] ...

  7. vue滚动行为

    有人问道如何记录vue页面的滚动条位置,再次载入组件的时候页面滚动到记录的位置? 思路: 记录滚动条位置我们好记 我们要在组件销毁之前也就是页面跳转的时候 需要用到生命周期beforeDistory将 ...

  8. 紫书 例题 10-12 UVa 1637(概率计算)

    以9元组来代表当前状态,每一元是每一堆剩下的牌数 枚举当前状态所有可以拿掉牌的情况,然后递归下去求 概率,当牌拿完的时候概率为1 那么这里的实现非常的秀,用到了vector来代表9元组 然后还用到了m ...

  9. socket 编程的端口和地址复用

    在linux socket网络编程中,大规模并发TCP或UDP连接时,经常会用到端口复用:   int opt = 1;   if(setsockopt(sockfd, SOL_SOCKET,SO_R ...

  10. UVA10269 Adventure of Super Mario(Floyd+DP)

    UVA10269 Adventure of Super Mario(Floyd+DP) After rescuing the beautiful princess, Super Mario needs ...