Redis-慢查询
- 概念
系统在命令执行前后计算每条命令的执行时间,当超过预定阀值时,记录命令的发生时间,耗时,命令的详细信息等。
Redis客户端执行一条命令分为发送命令、命令排队、命令执行、返回结果。慢查询只统计命令执行,所以没有慢查询并不代表客户端没有超时问题。
- 说明
- 慢查询发生在第三阶段(执行命令)
- 客户端超时不一定慢查询,但慢查询是客户端超时的一个因素
- 两个配置
- slowlog-max-len
- 慢查询是一个先进先出的队列
- 固定长度
- 保存在内存中
- 设置慢查询日志长度,如果慢查询日志已经达到最大值,如果有新命令需要记录,就将最老那条记录删除
- slowlog-log-slower-than
- 慢查询阈值(单位:微秒)
- slowlog-log-slower-than=0,记录所有命令
- slowlog-log-slower-than<0,不记录所有命令
- slowlog-max-len
- 配置方法
- 默认值
- config get slowlog-max-len=128
- config get slowlog-log-slower-than=1000
- 修改配置文件重启(不推荐)
- 动态配置
- config set slowlog-max-len 1000
- config set slowlog-log-slower-than 1000
- 默认值
- 慢查询命令
- slowlog get [n]:获取慢查询队列(n指定查询条数)
- 每个命令都由4各部分组成,分别是慢查询日志的表示ID,发生时间戳,命令耗时,执行命令和参数
- slowlog len:获取慢查询队列长度
- slowlog reset:清空慢查询队列
- slowlog get [n]:获取慢查询队列(n指定查询条数)
- 建议
- slowlog-log-slower-than不要设置过大,默认是10ms,通常设置1ms
- slowlog-max-len不要设置过小,通常设置1000左右
- 理解命令生命周期
- 定期持久化慢查询