Redis之慢查询分析
客户端请求的生命周期
和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之慢查询分析相关推荐
- [LBS学习笔记3]redis geo地理位置查询分析
1.redis geo命令 1.1 redis6.2版本geo命令简介 redis自3.2版本开始,提供了地理位置相关的命令: GEOADD:添加空间元素 GEOPOS: 获取某个地理位置的坐标 GE ...
- 使用elk+redis搭建nginx日志分析平台(引)
http://www.cnblogs.com/yjf512/p/4199105.html elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎 ...
- ELK+redis搭建nginx日志分析平台
ELK+redis搭建nginx日志分析平台 发表于 2015-08-19 | 分类于 Linux/Unix | ELK简介 ELKStack即Elasticsearch + Logs ...
- Spring Boot之基于Redis实现MyBatis查询缓存解决方案
转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...
- Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析
Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析 本文将从以下十二个方面进行介绍: 一.索引概念介绍 二.索引类型FULLTEXT,HASH,BTREE,RTREE有什么功能和性能上的 ...
- 天兔(Lepus)监控系统慢查询分析平台安装配置
转http://suifu.blog.51cto.com/9167728/1770672 被监控端要安装pt工具 1 2 3 4 [root@HE1~]## yum -y install perl-I ...
- redis批量操作及性能分析
redis批量操作及性能分析 用过redis的小伙伴都知道,这东西是C/S的,就单纯的ser key vvv 就要走一次TCP,记得官方是说redis的qps将近10W,这...我不太敢相信,一秒钟之 ...
- mysql性能优化-慢查询分析、优化索引和配置
目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_con ...
- 开源大数据查询分析引擎
引言 大数据查询分析是云计算中核心问题之一,自从Google在2006年之前的几篇论文奠定云计算领域基础,尤其是GFS.Map-Reduce.Bigtable被称为云计算底层技术三大基石.GFS.Ma ...
最新文章
- 新战场路在何方——详解360金融数据中台之旅
- RxSwift 小记 Error Handling Operators(catchError,retry)
- zookeeper适用场景:zookeeper解决了哪些问题
- linux如何右键新建文件夹,在Ubuntu 18.04右键菜单中增加新文档(New Document)及其他类型选项...
- Backbone集合
- MySQL DELETE 语句的一个简单介绍
- c语言常考的程序,C语言 一些常考得东西
- 自己实现java I/O中的BufferedReader对象中的raedLine方法
- 计算机数制和运算的一点总结.
- 微波工程(第三版)中关于史密斯圆图部分总结
- 新产品开发流程管理:以市场为驱动【笔记】(二)
- re模块或正则表达式
- STM32——EMWIN 字体(二十)
- php打开EXCEL过慢,打开excel很慢,编辑某个工作表很卡
- [C] 不撞南墙不回头——深度优先搜索
- 元素出栈入栈顺序是否合法
- 限速linux c语言,基于Linux系统的流量控制程序的C语言代码
- 《人工智能实践:Tensorflow笔记》听课笔记22_6.1输入手写数字图片输出识别结果
- 数据仓库(五)元数据管理
- 如何使用射手影音寻找字幕
热门文章
- 近世代数--整环与域--有限的整环是域
- [architecture]-armv8-aarch64种的SIMD/FP指令介绍
- linux kernel中的cmdline的详细介绍
- qui ajax,Ajax Fils de T Lamon
- GetFileAttributesEx读取文件相应属性
- 【渗透技术】一个渗透测试工具人是怎样操作的
- 112. 雷达设备【贪心】
- 【PAT乙级】1076 Wifi密码 (15 分)
- Spring boot国际化
- dubbo provider异步_Dubbo支持什么协议?与SpringCould相比它为什么效率要高一些?