客户端请求的生命周期

和Mysql数据库一样,Redis 也提供了慢查询日志记录,Redis 会把命令执行时间超过 slowlog-log-slower-than 的都记录在 Reids 内部的一个列表(list)中,该列表的长度最大为 slowlog-max-len 。需要注意的是,慢查询记录的只是命令的执行时间,不包括网络传输和排队时间:

客户端首先会发送一条命令。因为redis是单线程的,我们可以把服务端想象成一个队列,在执行之前得先排队等待之前命令的执行。

两点说明:

(1)慢查询发生在第三阶段

(2)客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素

1.两个配置

slowlog-max-len

用来设置存储慢查询记录列表的大小,默认值为 128,当该列表满了时,如果有新的记录进来,那么 Redis 会把队列中最旧的记录清理掉,然后存储新的记录。

1.先进先出

2.固定长度

3.保存在内存内

slowlog-log-slower-than

用来控制慢查询的阈值,所有执行时间超过该值的命令都会被记录下来。该值的单位为微秒。

1.slowlog-log-slower-than=0,记录所有阙值

2.slowlog-log-slower-than<0,不记录所有阙值

2.配置方法

(1)默认值

127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"
​
​
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"

(2)修改配置文件重启(不建议)

(3)动态配置

config set slowlog-max-len 1000
config set slowlog-log-slower-than 1000

3.慢查询命令

命令 描述
slowlog get [n] 获取慢查询队列
slowlog len 获取慢查询队列长度
slowlog reset 清空慢查询队列

下面操作返回当前 Redis 的所有慢查询记录,可以通过参数 n 指定查看条数:

127.0.0.1:6379> slowlog get1) 1) (integer) 1712) (integer) 15728832003) (integer) 324184) 1) "SMEMBERS"2) "p19904:message:account"2) 1) (integer) 1702) (integer) 15727407913) (integer) 129234) 1) "GET"2) "p19007:>127.0.0.1"

结果说明:

1) 慢查询记录 id;

2) 发起命令的时间戳;

3) 命令耗时,单位为微秒;

4) 该条记录的命令及参数;

5) 客户端网络套接字(ip: port);

4.注意事项

(1)slowly-max-len不要设置过大,默认10ms,通常设置1ms

由于Redis采用单线程响应命令,对于高流量的场景,如果命令执行时间在1毫秒以上,那么Redis最多可以支撑OPS不到1000,因此对于高OPS的场景的Redis建议设置1毫秒

(2)slowlog-log-slower-than不要设置过小,通常设置1000左右

(3)理解命令声明周期

慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。因此客户端执行命令的时间会大于命令实际执行的时间

(4)定期持久化慢查询

由于慢查询日志是一个先进先出的队列,也就是说如果慢查询比较多的情况下,可能会丢失部分慢查询命令,为了防止这种情况发生,可以定期执行slowlog get命令将慢查询日志持久化到其他存储中

Redis之慢查询分析相关推荐

  1. [LBS学习笔记3]redis geo地理位置查询分析

    1.redis geo命令 1.1 redis6.2版本geo命令简介 redis自3.2版本开始,提供了地理位置相关的命令: GEOADD:添加空间元素 GEOPOS: 获取某个地理位置的坐标 GE ...

  2. 使用elk+redis搭建nginx日志分析平台(引)

    http://www.cnblogs.com/yjf512/p/4199105.html elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎 ...

  3. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台 发表于 2015-08-19   |   分类于 Linux/Unix   |   ELK简介 ELKStack即Elasticsearch + Logs ...

  4. Spring Boot之基于Redis实现MyBatis查询缓存解决方案

    转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...

  5. Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析

    Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析 本文将从以下十二个方面进行介绍: 一.索引概念介绍 二.索引类型FULLTEXT,HASH,BTREE,RTREE有什么功能和性能上的 ...

  6. 天兔(Lepus)监控系统慢查询分析平台安装配置

    转http://suifu.blog.51cto.com/9167728/1770672 被监控端要安装pt工具 1 2 3 4 [root@HE1~]## yum -y install perl-I ...

  7. redis批量操作及性能分析

    redis批量操作及性能分析 用过redis的小伙伴都知道,这东西是C/S的,就单纯的ser key vvv 就要走一次TCP,记得官方是说redis的qps将近10W,这...我不太敢相信,一秒钟之 ...

  8. mysql性能优化-慢查询分析、优化索引和配置

    目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_con ...

  9. 开源大数据查询分析引擎

    引言 大数据查询分析是云计算中核心问题之一,自从Google在2006年之前的几篇论文奠定云计算领域基础,尤其是GFS.Map-Reduce.Bigtable被称为云计算底层技术三大基石.GFS.Ma ...

最新文章

  1. 新战场路在何方——详解360金融数据中台之旅
  2. RxSwift 小记 Error Handling Operators(catchError,retry)
  3. zookeeper适用场景:zookeeper解决了哪些问题
  4. linux如何右键新建文件夹,在Ubuntu 18.04右键菜单中增加新文档(New Document)及其他类型选项...
  5. Backbone集合
  6. MySQL DELETE 语句的一个简单介绍
  7. c语言常考的程序,C语言 一些常考得东西
  8. 自己实现java I/O中的BufferedReader对象中的raedLine方法
  9. 计算机数制和运算的一点总结.
  10. 微波工程(第三版)中关于史密斯圆图部分总结
  11. 新产品开发流程管理:以市场为驱动【笔记】(二)
  12. re模块或正则表达式
  13. STM32——EMWIN 字体(二十)
  14. php打开EXCEL过慢,打开excel很慢,编辑某个工作表很卡
  15. [C] 不撞南墙不回头——深度优先搜索
  16. 元素出栈入栈顺序是否合法
  17. 限速linux c语言,基于Linux系统的流量控制程序的C语言代码
  18. 《人工智能实践:Tensorflow笔记》听课笔记22_6.1输入手写数字图片输出识别结果
  19. 数据仓库(五)元数据管理
  20. 如何使用射手影音寻找字幕

热门文章

  1. 近世代数--整环与域--有限的整环是域
  2. [architecture]-armv8-aarch64种的SIMD/FP指令介绍
  3. linux kernel中的cmdline的详细介绍
  4. qui ajax,Ajax Fils de T Lamon
  5. GetFileAttributesEx读取文件相应属性
  6. 【渗透技术】一个渗透测试工具人是怎样操作的
  7. 112. 雷达设备【贪心】
  8. 【PAT乙级】1076 Wifi密码 (15 分)
  9. Spring boot国际化
  10. dubbo provider异步_Dubbo支持什么协议?与SpringCould相比它为什么效率要高一些?