Redis CPU过高排查

Redis CPU过高

测试环境经常卡住,经过排查是鉴权的不稳定,鉴权又经过redis查询。来到redis机器,发现cpu100%。redis的锅

top

image

redis竟然cpu使用率达到100%

保存慢查询条数

config get showlog-max-len

设置慢查询条数

config set showlog-max-len 1000

查看当前已记录数量

slowlog len

查看已重新记录日志

slowlog reset

获取慢查询记录

slowlog get 100

image

查看慢查询日志。发现有好几个scan操作执行时间超过10000微秒,有些更甚高达20000微秒。这个意味,如果都是这样的操作,redis每秒并发性能只能达到50~100。很恐怖,redis号称每秒10万并发的呀。

设置慢查询游标(默认微妙)

config set slowlog-log-slower-than 1000

获取慢查询游标(默认微妙)

config get slowlog-log-slower-than

查看连接数设置

config get maxclients

查看当前客户端连接数

info clients

image

观测info命令数量

info commandstats

image

calls: 次数
usec: 总时间
usec_per_call:平均时间

scan调用次数为1.36亿,平均时间为1356.37微秒。这个意味,如果都是这样的操作,redis每秒并发性能只能达到1000。

查看monitor监控

redis-cli -h 127.0.0.1 -p 6379 -a password monitor > a.txt

image

image

记录5分钟的redis操作日志。统计一下redis一秒约850个请求。有750个是scan操作。破案了。scan模糊查询,大keys的锅。业务问题,剩下的就是改业务问题了。

redis info

image

posted @ 2022-06-26 13:19  TY520  阅读(1728)  评论(0编辑  收藏  举报