博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何分析redis中的慢查询
阅读量:4974 次
发布时间:2019-06-12

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

慢查询的两个参数配置

慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。因此客户端执行命令的时间会大于命令实际执行时间。因为命令执行排队机制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求超时,需要检查该时间点是否有对应的慢查询,从而分析出是否为慢查询导致的命令级联阻塞

Redis提供了slowlog-log-slower-than和slowlog-max-len配置来解决这两个问题

  • slowlog-log-slower-than:慢查询预定阀值,单位是微秒,默认值是10000,如果一条命令的执行时间超过了10000微秒,那么他将被记录在慢查询日志中

如果slowlog-log-slower-than=0会记录所有的命令,slowlog-log-slower-than<0对于任何命令都不会进行记录

  • slowlog-max-len:Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度,一个新的命令满足慢查询条件时被插入到这个列表中,当慢查询日志列表已处于其最大长度时,最早插入的一个命令将从列表中移出

在Redis中有两种修改配置的方法,一种是修改配置文件,另一种是使175用config set命令动态修改。例如下面使用config set命令将slowlog-log-slower-than设置为20000微秒,slowlog-max-len设置为1000

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

如果要Redis将配置持久化到本地配置文件,需要执行config rewrite命令

虽然慢查询日志是存放在Redis内存列表中的,但是Redis并没有暴露这个列表的键,而是通过一组命令来实现对慢查询日志的访问和管理

  • 获取慢查询日志 slowlog get [n]

每个慢查询日志有4个属性组成,分别是慢查询日志的标识id、发生时间戳、命令耗时、执行命令和参数

  • 获取慢查询日志列表当前的长度 slowlog len

  • 慢查询日志重置 slowlog reset

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

转载于:https://www.cnblogs.com/senlinyang/p/10916940.html

你可能感兴趣的文章
构造函数
查看>>
LeetCode N-Queens
查看>>
jstat 命令
查看>>
leetcode[155]Min Stack
查看>>
《代码不朽:编写可维护软件的10大要则(C#版)》读后感
查看>>
04、我的.net Core的学习 - 网页版Hello World
查看>>
分块学习
查看>>
UIWebView 屏蔽或者修改 alert警告框
查看>>
Qt-第一个QML程序-3-自定义一个按钮
查看>>
分布式系统事务一致性解决方案
查看>>
树梅派中文输入法支持
查看>>
[Git] 005 初识 Git 与 GitHub 之分支
查看>>
使用Analyze 和Instruments-Leaks分析解决iOS内存泄露
查看>>
Vue.js的入门
查看>>
【自定义异常】
查看>>
pip install 后 importError no module named "*"
查看>>
一些疑惑
查看>>
Codeforces Round #413 A. Carrot Cakes
查看>>
Linux(Ubuntu16.04)下添加新用户
查看>>
Windows c++应用程序通用日志组件(组件及测试程序下载)
查看>>