码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071
Redis命令执行步骤
- 发送命令
- 命令排队
- 命令执行
- 返回结果
慢查询只统计步骤3命令执行的时间,所以没有慢查询并不代表客户端没有超时问题。
配置项
- slowlog-log-slower-than代表一条命令执行超过多少微秒就会记录为慢查询,默认为10000
- slowlog-max-len代表慢查询日志最多存储多少条,默认为128,超出后,先记录的会被顶掉
相关命令
- slowlog get [n]:获取当前记录的慢查询,参数n可以指定条数,每条返回值包括4部分,日志唯一id、执行时间戳、执行时间(单位微秒)、命令和参数
- slowlog len:获取慢查询日志的条数
- slowlog reset:慢查询日志重置
配置建议
- slowlog-max-len建议线上配置1000以上,降低慢查询被剔除的可能
- slowlog-log-slower-than在高并发场景建议设置为1毫秒,也就是1000
- 当客户端出现请求超时,需要检查该时间点是否有定影的慢查询,从而分析出是否为慢查询导致的命令级联阻塞
- 可以定期执行slow get命令将慢查询日志持久化到MySQL中(开源工具:https://github.com/sohutv/cachecloud)