加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 站长资讯 > 动态 > 正文

用慢查询找到 Redis 的性能瓶颈?

发布时间:2021-03-23 09:35:48 所属栏目:动态 来源:互联网
导读:由于Redis的单线程架构,所以需要每个命令能被快速执行完,否则会存在阻塞Redis的可能,理解Redis单线程命令处理机制是开发和运维Redis的核心之一。 许多数据库会提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前



由于Redis的单线程架构,所以需要每个命令能被快速执行完,否则会存在阻塞Redis的可能,理解Redis单线程命令处理机制是开发和运维Redis的核心之一。

许多数据库会提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当然在数据库中最常见的就是select这些sql语句了,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似的功能。

那么如何使用Redis所提供的慢查询功能呢?Redis主要提供了slowlog-log-slower-than和slowlog-max-len两个配置参数来提供这项功能。两项参数分别用来设置慢查询的阈值以及存放慢查询的记录。首先对redis的这两个配置进行一个说明 :

从字面意思就可以看出,可以通过slowlog-log-slower-than参数设置什么情况下是慢语句,只有redis命令执行时间大于slowlog-log-slower-than的才会定义成慢查询,才会被slowlog进行记录。它的单位是微秒(1秒=1000毫秒=1000000微秒),在初始情况下默认值是10000,也就是10ms,假如执行了一条比较慢的命令,如果它的执行时间超过了 10ms ,那么它将被记录在慢查询日志中。(如果slowlog-log-slower-than=0会记录所有的命令,slowlog-log-slower than<0对于任何命令都不会进行记录)

从字面意思看,slowlog-max-len说明了慢查询日志最多可以存储多少条记录,实际上Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度,它自身是一个先进先出队列,当slowlog超过设定的最大值后,会将最早的slowlog删除。简而言之当一个新的命令满足慢查询条件时会被插入到这个列表中,当慢查询日志列表已处于其最大长度时,最早插入的一个命令将从列表中移出,例如slowlog-max-len设置为 50 ,当有第51条慢查询插入的话,那么队头的第一条数据就出列,第51条慢查询就会入列。

接下来详细介绍一下如何配置这两个参数,有两种方式进行配置,以下截图全部使用了redis -5.0.5版本 :

方式一:通过配置redis.conf文件进行配置。

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读