今天,中间件接口响应时间长,经过粗略的故障诊断,发现Redis访问速度慢,Redis的cpu确实达到了98%左右。 现在有必要确定问题。 首先打开Redis的慢速日志。
什么是慢速日志
Slow log是Redis用于记录查询执行时间的日志系统。
执行查询的时间不包括客户端响应、发送回复等I/o操作,而只是执行查询命令所需的时间。
此外,由于slow log存储在内存中,读写速度非常快,因此打开slow log不会影响Redis的速度,可以放心使用。
Slow log的行为由两个配置参数“CONFIGuration parameter”指定,可以重写redis.conf文件,也可以使用CONFIG和CONFIG命令动态更改。
第一个选项是慢速日志缓冲区,用于确定记录运行时间超过多少微秒(microsecond,1秒=1,000,000微秒)的查询。
例如,运行以下命令时,slow log将记录所有查询时间都在100微秒以上的查询:
configsetslowlog-log-slower-than 100
以下命令记录查询时间超过1000微秒的所有查询。
configsetslowlog-log-slower-than 1000
另一个选项是slow log-max-len,它确定slow log可以保存的最大日志数。 slow log本身是LIFO队列,如果队列大小超过slowlog-max-len,则会删除最旧的日志并将最新的日志添加到slow log中。
以下命令使slow log最多存储1000个日志。
配置获取慢速日志-最大- len
使用CONFIG命令可以查询两个选项的当前值。
看慢日志
要显示slow log,请使用打印所有slow log的SLOWLOG GET命令或SLOWLOG GET number命令。 最大长度取决于“slowlog-max-len”选项的值,SLOWLOG number仅打印指定数量的日志。
最新日志将首先打印:
日志的唯一id仅在Redis服务器重新启动时重置,以避免日志重复处理。 例如,您可能希望在每次找到新的慢查询时通过电子邮件通知您。
显示当前日志的数量
命令SLOWLOG允许您显示当前日志的数量。
请注意此值和slower-max-len之间的差异。 一个是当前日志的数量,另一个是可以记录的最大日志数量。
redis SLOWLOG LEN
(集成器) 14
清除日志
可以使用SLOWLOG RESET命令清空slow log。
redis SLOWLOG LEN
(集成器) 14
redis slow日志重置
redis SLOWLOG LEN
(集成器) 0
在抛出日志中,可以看到程序使用了keys message_*命令,从而增加了中间件的响应时间。 修改代码,解决问题。
您可能也喜欢下一篇关于Redis的文章。 请参考:
Redis详细介绍:请单击此处
Redis下载地址:请单击此处