2.14 慢查询 🎉
...大约 2 分钟
2.14 慢查询 🎉
慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?
Redis命令执行的整个过程
- 慢查询发生在第3阶段
- 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素
- 慢查询日志是存放在Redis内存列表中。
慢查询日志是Redis服务端在命令执行前后计算每条命令的执行时长,当超过某个阈值是记录下来的日志。日志中记录了慢查询发生的时间,还有执行时长、具体什么命令等信息,它可以用来帮助开发和运维人员定位系统中存在的慢查询。
可以使用slowlog get
命令获取慢查询日志,在slowlog get
后面还可以加一个数字,用于指定获取慢查询日志的条数,比如,获取3条慢查询日志:
SLOWLOG get 3
参数
- 唯一标识ID
- 命令执行的时间戳
- 命令执行时长
- 执行的命名和参数
如何获取慢查询日志的长度
可以使用slowlog len命令获取慢查询日志的长度。
slowlog len
如何进行配置 💎
查看redis慢日志配置,登陆redis服务器,使用redis-cli客户端连接redis server
config get slow*
提示
10000阈值,单位微秒,此处为10毫秒,128慢日志记录保存数量的阈值,此处保存128条。
修改Redis配置文件
比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
slowlog-log-slower-than 1000
slowlog-max-len 1200
使用config set
命令动态修改。
比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
config set slowlog-log-slower-than 1000
config set slowlog-max-len 1200
config rewrite
实践建议
- slowlog-max-len配置建议
- 线上建议调大慢查询列表,记录慢查询时Redis会对长命令做截断操作,并不会占用大量内存。
- 增大慢查询列表可以减缓慢查询被剔除的可能,例如线上可设置为1000以上。
- slowlog-log-slower-than配置建议
- 默认值超过10毫秒判定为慢查询,需要根据Redis并发量调整该值。
- 由于Redis采用单线程响应命令,对于高流量的场景,如果命令执行时间在1毫秒以上,那么Redis最多可支撑OPS不到1000。因此对于高OPS场景的Redis建议设置为1毫秒。
Powered by Waline v2.15.7