慢查询日志:
就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息记录下俩。
Redis客户端执行一条命令分为4个步骤:
- 发送命令
- 命令排队
- 命令执行
- 返回结果
慢查询只统计步骤3的时间,所以没有慢查询并不代表客户端没有超时问题。
慢查询日志两个配置参数:
预设阀值?
slowlog-log-slower-than:预设阀值,单位是微妙,默认值是10000。
slowlog-log-slower-than=0 会记录所有命令
slowlog-log-slower-than<0 对于任何命令都不会记录
慢查询记录存放在哪里?
slowlog-max-len 慢查询记录最多存储多条
Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度。一个新命令满足慢查询条件时被插入这个列表中,当慢查询列表已处于最大长度时,最早插入的一个命令将从列表转给你移出。
两种修改配置方式:
方式一、修改配置文件:
# The following time is expressed in microseconds, so 1000000 is equivalent
# to one second. Note that a negative number disables the slow log, while
# a value of zero forces the logging of every command.
slowlog-log-slower-than 0
# There is no limit to this length. Just be aware that it will consume memory.
# You can reclaim memory used by the slow log with SLOWLOG RESET.
slowlog-max-len 10
方式二、在客户端交互模式下使用config set命令动态修改:
config set slowlog-log-slower-than 20000
config set slow-max-len 1000
config rewrite (Redis将配置持久化到本地配置文件,如果不写这句话,以上慢查询设置值准队当前的会话来说)
获取慢查询日志
slowlog get [n] 参数n指定条数
每个慢查询日志有4个属性:
- 标识id
- 发生时间戳
- 命令耗时
- 执行命令和参数
获取慢查询日志列表当前的长度:
slowlog len
慢查询日志重置:
实质上是清理慢查询日志列表
slowlog reset