redis的慢查询日志

客户端请求生命周期分为:发送命令,排队,执行命令,返回结果。

慢查询只统计执行命令的时间,所以没有慢查询并不代表客户端没有超时问题,redis的慢查询记录时间指的是不包含向客户端响应,发送回复等io操作,而丹丹是执行一个查询命令所消耗的时间。

设置和查看SLOWLOG

慢查询配置相关参数

slowlog-log-slower-than 选项指定执行时间超过多少微秒(默认1秒)的命令请求会被记录到日志上。

如果这个值为100,那么执行超过100微秒的都会记录到慢查询中。

slowlog-max-len 选项最多保存多少条查询日志,当出妇女的数量等于设置条数时,在添加的新日志,会删除掉最先保存的旧的日志。

redis中有两种配置的方式修改一种是修改配置文件,一种是使用config set命令动态修改:

config set slowlog-log-slower-than 20000
config set slowlog-max-len 1024
slowlog get #查询慢查询日志
slowlog get [n] #获取慢查询队列(n条)
slowlog reset #清空重置慢查询日志
127.0.0.1:6379> slowlog get 1
1) 1) (integer) 4 //每条日志唯一id编号
2) (integer) 1692282142 //命令执行的时间戳
3) (integer) 13//执行命令的时常,单位微秒
4) 1) "slowlog"//具体命令和参数
2) "get"
5) "172.17.0.1:38836"//ip端口
6) ""//客户端名称

生产环境中,慢查询配置

slowlog-max-len 线上建议调大慢查询列表,记录慢查询时redis会对长命令做阶段操作,病不会占用大量内存,增大慢查询列表,可以减缓慢查询被删除的可能,例如线上可以设置1000以上。
slowlog-log-slower-than ,默认超过10毫秒判定为慢查询需要根据redis并发量调整该值。
慢查询只记录命令执行时间,并不包括命令排队和网络传输,因为执行命令排队机制,慢查询会导致其他命令级联阻塞,因为客户端出现请求超时时,需要检查时间是否有对应慢查询,从而分析是否为慢查询导致的命令级联阻塞。
由于慢查询日志是先进先出的队列,也就是说慢查询较多情况下,可能丢失部分慢查询命令,防止这个发生,可以将slowlog get持久化到其他存储引擎中,比如mysql。通过可视化工具查询。
posted @   三号小玩家  阅读(580)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-08-17 mabatis的sql标签
Title
三号小玩家的 Mail: 17612457115@163.com, 联系QQ: 1359720840 微信: QQ1359720840
点击右上角即可分享
微信分享提示