轻松使用 Redis slowlog
之前中秋项目搞活动,用户比较活跃 SE.Redis 频繁报 Timeout 异常,狂翻了一波 issues 发现提这个问题还蛮多的,作者非常频繁的提到使用 slowlog 这个命令进行排查,那么问题就来了,它是干嘛滴?
Redis slowlog 是个什么
使用这个命令可以读取或重置 Redis 慢速查询日志。通俗讲就是 redis 可以把执行时间超过我们设定值的命令记录下来,slowlog 是记录到内存中的哦,所以非常快。
这里的执行时间不包括 I/O 操作,比如与客户端,发送应答等等,就是实际执行命令所需的时间(命令唯一执行的阶段,线程被阻塞且不能同时处理其他请求)。
设置 Redis slowlog
两种方式:
- 可以通过配置 redis.conf 来完成。
- 运行时,使用 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的更多相关文章
- Redis slowlog
和mongo的slowlog一样,redis中对于操作时间较长(默认为10秒)的命令也会记录下来,不过它将它们保存在redisServer结构中的slowlog这个链表中,新进来的log排在链表头部, ...
- Redis slowlog慢查询
slowlog (阅读原文) 此命令用于读取和重置redis慢请求日志 redis slow log概述 redis的slow log记录了那些执行时间超过规定时长的请求.执行时间不包括I/O操作(比 ...
- redis slowlog 慢查询日志
设置 config set slowlog-log-slower-than 10000(微秒) //查看redis时间超过上面设置的阀值的key slowlog len 有几个key slowlog ...
- 1、redis 基础
1.1 导言 如果你从来没使用过 Redis 数据库,那你肯定会问,为什么我们要学 Redis数据库,我只使用 MySQL 或 Oracle 就够了.其实 Redis 虽叫数据库,可又不是传统意义上的 ...
- redis安装与介绍
安装 一般推荐次新版的最后一个发行版.https://redis.io/download 先安装gcc, yum install gcc tar xzf redis-3.2.3.tar.gz cd r ...
- Redis慢链接查看
设置定义慢日志(小于n微秒的定义为慢日志):CONFIG SET slowlog-log-slower-than n 注:1秒 = 1,000,000微秒设置服务器保存的慢日志最多条数:config ...
- PHP Redis 全部操作方法
Classes and methods Usage Class Redis Class RedisException Predefined constants Class Redis Descript ...
- redis状态查看
https://redis.readthedocs.org/en/latest/server/slowlog.html https://redis.readthedocs.org/en/lat ...
- redis专题--slow log详解
SLOWLOG subcommand [argument] 什么是 SLOWLOG Slow log 是 Redis 用来记录查询执行时间的日志系统. 查询执行时间指的是不包括像客户端响应(talki ...
随机推荐
- 安卓开发--ListView
package com.zx.listview01; import java.util.ArrayList; import java.util.HashMap; import java.util.Li ...
- shell call python
python -c "import os; p=os.getcwd(); print(p);print(p);print(p);print('test over')"
- <Sicily>Greatest Common Divisors
一.题目描述 A common divisor for two positive numbers is a number which both numbers are divisible by. It ...
- HDU 5214 Movie【贪心】
题意:给出n,l[1],r[1],a,b,c,d 其中 l[i]=l[i-1]*a+b,r[i]=r[i-1]*c+d; 问能否从这n个区间中选出不相交不重叠的三个区间 看的题解 先考虑最左边的区间, ...
- salt的grains
grains作用: 1.匹配 minion 2.收集信息 (每次重启minion才会收集) grains 数据存储在minion端. salt '*' grains.ls salt '*' grain ...
- logsource and ALO
1.首先配置sourcedb上的nfs服务,oggstd上挂载sourcedb的online redo和archive log的目录 oggsource上配置: vi /etc/export ...
- 洛谷 P2486 [SDOI2011]染色 LCT
Code: #include <cstdio> //SDOI2010 染色 #include <algorithm> #include <cstring> #inc ...
- HTML5按键打开摄像头和拍照
HTML5实现按键打开摄像头和拍照 步骤: 1.创建一个打开摄像头按钮的标签.video标签.拍照的按钮标签.画布 2.实现打开摄像头的功能 3.实现拍照功能 具体实现代码: <!DOCTY ...
- 使用U盘作为启动盘安装ubuntu系统
一.使用U盘刻录镜像 1.安装之后我们打开软件,点击文件打开,找到我们刚才进行下载的Ubuntu的ISO文件,然后点击打开,完成ISO文件的加载.接着我们插入U盘,点击UltraISO启动选项,然后 ...
- C++函数指针相关 & 类成员的指针 & 成员函数的指针
有时候会有指向类成员变量或者成员函数的指针,但是注意,这个指针并不是针对一个地址的指向,而更多的是一个偏移. 同时,支持将父类对象的成员 转为 子类对象的成员指针,如下: 反过来,是不行的.因为父类的 ...