Redis 慢查询相关配置

文若2年前技术文章497

一、查询生命周期

截屏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

三、使用经验

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


相关文章

Ldap高可用部署

Ldap配置高可用两个节点上均执行mkdir /data/ldapcd /data/ldap1.1. 添加mod_syncprov.ldif文件vi mod_syncprov.ldif 内容如下:ob...

MySQL 8.0 新特性:invisible indexes

MySQL 8.0 新特性:invisible indexes

一、前言什么是 invisible indexes 呢?就是不可见索引,优化器会默认忽略的索引,关于这个特性的用处,需要我们一起挖掘。二、案例思考某客户研发提了一条删除索引的 SQL,这张表 15G,...

Linux操作系统之Linux命令的返回值

Linux命令执行后无论成功与否都有一个返回值,如果为 0,则表示命令执行成功,其它值则表示执行错误。具体的错误码含义如下:  "OS error code  1: Operation not per...

PG初识

PG数据库是一种典型的C/S模型应用,不同的客户端通过TCP/IP进行连接、每个连接启动一个fork进程(多进程数据库)。一、pg逻辑架构1.1 pg与MySQL异同对比逻辑架构postgresMyS...

oracle v$archive_log视图过期信息清理

      在使用RMAN命令删除归档后,查询v$archived_log视图会发现name列为空了,但其他列的信息还保留,时间长了会留下很多过期的信息,影响维护工作,需要将过期的信息删除。 出现这样...

K8s数据持久化

K8s数据持久化

一、为什么需要持久化为了解决pod里面的容器被删除后数据不丢失,则引入了存储类型,类似于docker中的数据卷。在kubernetes集群中,其是支持多种存储类型,包括但不限于emptyDir,Hos...

发表评论    

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