Redis CPU过高
- 测试环境经常卡住,经过排查是鉴权的不稳定,鉴权又经过
redis
查询。来到redis
机器,发现cpu100%
、redis
的锅
top
redis
竟然cpu
使用率达到100%
保存慢查询条数
config get showlog-max-len
设置慢查询条数
config set showlog-max-len 1000
查看当前已记录数量
slowlog len
查看已重新记录日志
slowlog reset
获取慢查询记录
slowlog get 100
查看慢查询日志。发现有好几个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
观测info命令数量
info commandstats
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
记录5
分钟的redis
操作日志。统计一下redis
一秒约850
个请求。有750
个是scan
操作。破案了。scan
模糊查询,大keys
的锅。业务问题,剩下的就是改业务问题了。