Redis 慢查询相关配置

文若2年前技术文章605

一、查询生命周期

截屏2023-06-09 14.51.13.png

一条查询的生命周期:

  1. 发送命令

  2. 命令排队

  3. 执行命令

  4. 返回结果

Redis 慢日志只统计 “执行命令” 步骤 3 的耗时,所以没有慢查询并不代表客户端没有超时问题。

二、慢日志配置参数

慢日志相关的参数有两个:

slowlog-log-slower-than 慢日志的阈值,单位是 微秒 (1秒=1000毫秒=1000000微秒)默认值 10000 (10 毫秒) 如果设置为 0 将会记录所有的命令,如果 < 0 则任何命令都不会记录。

slowlog-max-len Redis 的慢日志实际上是存在在列表中的,该参数即为列表的长度,可以存储多少条命令。 先进先出队列,如果慢查询较多的话,可能会丢失一部分,所以需要按照需求设定该值,或者搭建慢查询分析平台。

慢日志动态修改:

config set slowlog-log-slower-than 10000
config set slowlog-max-len 128
config rewrite

获取慢查询数量:

slowlog len
127.0.0.1:6379> slowlog len
(integer) 7

获取慢查询日志:

# n 指一次慢日志的数量
slowlog get n
127.0.0.1:6379> slowlog get 1
1) 1) (integer) 6
  2) (integer) 1635833786
  3) (integer) 41971
  4) 1) "keys"
     2) "*"
  5) "127.0.0.1:33262"
  6) ""

清空慢日志队列:

slowlog reset

三、使用经验

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


相关文章

Python 装饰器

1、闭包自由变量:未在本地作用域中定义的变量。例如定义在内层函数外的外层函数的作用域中的变量。闭包:就是一个概念,出现在嵌套函数中,指的是内层函数引用到了外层函数的自由变量,就形成了闭包。很多语言都有...

华为云SQLServer 慢日志查看

华为云SQLServer 慢日志查看

一、背景华为云目前只支持 SQLServer 登录数据库,不支持查看慢日志。对于开启慢日志的实例,也只能通过将慢日志下载到本地 再远程连接目标实例数据库查看。本篇将华为云 SQLServer 实例出现...

HDFS分层存储(一)

1、介绍Hadoop分布式文件系统支持在HDFS中的各种存储类型。现在,您可以为DataNode数据目录指定不同的存储类型,这样可以根据数据使用频率优化数据使用并降低成本。例如需要频繁使用的数据,可以...

HBase数据结构

1 RowKey与nosql数据库们一样,RowKey是用来检索记录的主键。访问HBASE table中的行,只有三种方式:1.通过单个RowKey访问2.通过RowKey的range(正则)3.全表...

Containerd OCI runtime create failed

Containerd OCI runtime create failed

1、背景Kubernetes 集群新增 worker 节点(centos7、containerd),发现容器一直启动不起来。2、报错信息经查看系统 message 日志发现如下报错信息:rpc err...

CDH实操--CDH集成flink 1.13.6(二)

CDH实操--CDH集成flink 1.13.6(二)

一、编译flink1、下载flink1.13.6源码包wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.13.6/flink...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。