危害
Redis常常用于高并发场景,作为缓存来进行使用。如果说Redis的cpu因为一些原因升高,会影响到我们的整体吞吐量及应用响应速度,导致请求阻塞,进而导致我们整体服务应用没有响应。
如果持续升高,特别极端的情况下,redis会直接挂掉,缓存不可用,导致数据穿透到数据库层面,造成一系列的雪崩反应。
那么我们在监控redis的时候,有两个重要的指标,平均的cpu使用率以及峰值使用率。
监控方式
可以使用metricbeat+filebeat+monitori进行监控。
也可以通过redis proxy 进行代理监控。
应急方案
- 如果是刚上线导致的,有降级方案就降级,没有就回滚,
- 切换主从节点顶一下
排查思路
根据监控工具判断 CPU 升高是瞬时性的还是周期性的,甚至是持续性的
● 瞬时性:则排查该时刻的命令
● 周期性:排除定时任务
● 持续性:比较复杂,大量命令排除
1. 找出 CPU 高时段的高消耗命令
a. 利用上述工具,记录 redis 命令执行日志
b. 拿到命令后,分析哪些命令是高消耗的,时间复杂度高的例如 keys *
2. 找出 redis 执行命令的慢日志
a. 慢日志的两个参数
ⅰ. slow-log-slower-than