博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊聊redis的slowlog与latency monitor
阅读量:6266 次
发布时间:2019-06-22

本文共 3089 字,大约阅读时间需要 10 分钟。

本文主要研究一下redis的slowlog与latency monitor

slowlog

redis在2.2.12版本引入了slowlog,用于记录超过指定执行时间的命令,这个执行时间不包括诸如与客户端通信的IO操作耗时,是实实在在的命令执行的耗时。主要有如下操作:

查看slowlog的数量

127.0.0.1:6379> slowlog len(integer) 1024复制代码

查看slowlog的执行耗时阈值

127.0.0.1:6379> config get slowlog-log-slower-than1) "slowlog-log-slower-than"2) "1000"复制代码

设置slowlog的执行耗时阈值

127.0.0.1:6379> config set slowlog-log-slower-than 1000OK复制代码

查看slowlog保存数量的阈值

127.0.0.1:6379> config get slowlog-max-len1) "slowlog-max-len"2) "1024"复制代码

设置slowlog保存数量的阈值

127.0.0.1:6379> config set slowlog-max-len 1024OK复制代码

查询slowlog

127.0.0.1:6379> slowlog get 11) 1) (integer) 76016   2) (integer) 1537250266   3) (integer) 48296   4) 1) "COMMAND"复制代码

第一行是命令id,第二行是timestamp,第三行是执行耗时,第四行是命令及参数

清除slowlog记录

127.0.0.1:6379> slowlog resetOK复制代码

latency monitor

redis在2.8.13版本引入了latency monitoring,这里主要是监控latency spikes(延时毛刺)。它基于事件机制进行监控,command事件是监控命令执行latency,fast-command事件是监控时间复杂度为O(1)及O(logN)命令的latency,fork事件则监控redis执行系统调用fork(2)的latency。主要有如下操作:

设置/开启latency monitor

127.0.0.1:6379> config set latency-monitor-threshold 100OK复制代码

读取latency monitor配置

127.0.0.1:6379> config get latency-monitor-threshold1) "latency-monitor-threshold"2) "100"复制代码

获取最近的latency

127.0.0.1:6379> debug sleep 1OK(1.01s)127.0.0.1:6379> debug sleep .25OK127.0.0.1:6379> latency latest1) 1) "command"   2) (integer) 1537268070   3) (integer) 250   4) (integer) 1010复制代码

返回事件名、发生的时间戳、最近的延时(毫秒)、最大的延时(毫秒)

查看某一事件的延时历史

127.0.0.1:6379> latency history command1) 1) (integer) 1537268064   2) (integer) 10102) 1) (integer) 1537268070   2) (integer) 250复制代码

查看事件延时图

127.0.0.1:6379> latency reset command(integer) 0127.0.0.1:6379> debug sleep .1OK127.0.0.1:6379> debug sleep .2OK127.0.0.1:6379> debug sleep .3OK127.0.0.1:6379> debug sleep .4OK127.0.0.1:6379> debug sleep .5OK(0.50s)127.0.0.1:6379> latency graph(error) ERR syntax error127.0.0.1:6379> latency graph commandcommand - high 500 ms, low 100 ms (all time high 500 ms)--------------------------------------------------------------------------------   _#  _|| _|||_||||221174062sssss复制代码

重置/清空事件数据

127.0.0.1:6379> latency reset command(integer) 1127.0.0.1:6379> latency history command(empty list or set)127.0.0.1:6379> latency latest(empty list or set)复制代码

诊断建议

127.0.0.1:6379> latency doctorDave, I have observed latency spikes in this Redis instance. You don't mind talking about it, do you Dave?1. command: 6 latency spikes (average 257ms, mean deviation 142ms, period 3.83 sec). Worst all time event 500ms.I have a few advices for you:- Check your Slow Log to understand what are the commands you are running which are too slow to execute. Please check http://redis.io/commands/slowlog for more information.- Deleting, expiring or evicting (because of maxmemory policy) large objects is a blocking operation. If you have very large objects that are often deleted, expired, or evicted, try to fragment those objects into multiple smaller objects.复制代码

小结

  • redis的slowlog在2.2.12版本引入,latency monitor在2.8.13版本引入
  • slowlog仅仅是记录纯命令的执行耗时,不包括与客户端的IO交互及redis的fork等耗时
  • latency monitor监控的latency spikes则范围广一点,不仅包括命令执行,也包括fork(2)系统调用,key过期等操作的耗时

doc

转载地址:http://ogdpa.baihongyu.com/

你可能感兴趣的文章
Docker & ASP.NET Core (4):容器间的连接
查看>>
beam 的异常处理 Error Handling Elements in Apache Beam Pipelines
查看>>
将png图片转换为字体图标
查看>>
/var/log/wtmp
查看>>
C# 获取机器码
查看>>
什么是医嘱?医嘱的书写内容?
查看>>
如何通过CSP编程卸载Windows Mobile应用程序
查看>>
用delphi实现完美屏幕截图
查看>>
matlab练习程序(差异演化DE)
查看>>
这就是搜索引擎:核心技术详解
查看>>
加解密技术处理时间对比
查看>>
g++命令行详解 (转)
查看>>
Ubuntu菜鸟入门(九)—— 支付宝支付控件安装
查看>>
什么是 SRS 呢?在我们大部分的音频播放器里都内欠有这种音效。
查看>>
对/etc/rc.d/init.d目录的一点理解(转)
查看>>
c#使用params重载方法
查看>>
浅析C# 中object sender与EventArgs e
查看>>
遇到Audio/Speech相关问题,如何抓取log
查看>>
数学之路(3)-机器学习(4)-专家系统(1)
查看>>
Android中常用单位dp,px,sp之间的相互转换
查看>>