- 前言
redis是主从加哨兵架构,java服务放在k8s上,使用springboot的actuator来进行健康检查。
故障原因如下,redis因为cpu激增,导致响应慢,断开了和java的连接,正好在k8s健康检查的时间内,检查到java服务不正常,k8s干掉了java服务,导致业务不正常。
- 解决思路
- 首先防止雪崩效应,避免雪球越滚越大,网络波动是我们避免不了的,我们也不能因为这个原因,去加大k8s检查间隙时间或者关闭k8s的健康检查,不能因为丢了西瓜去捡芝麻,所以更合适的解决办法是,springboot去做健康检查的时候,关闭掉对redis的检查,不要因为redis的问题,导致java服务雪崩。
management.health.redis.enabled=false
2.redis cpu激增检查,cpu飙高,我们要分情况来选择合适的方法排查,如果是一直很高,直接查看信息,可能线程死锁了等,如果是一会儿高,一会儿降低,火焰图更适合。
- 先检查redis的慢日志,slowlog get 5,如果有慢日志,使用

本文记录了一次由于Redis CPU激增导致的线上服务雪崩事件。Redis采用主从哨兵架构,Java服务在K8s上运行。CPU问题引发了健康检查失败,K8s自动移除了Java服务。为防止雪崩,解决方案是在SpringBoot健康检查中忽略Redis检查。此外,通过检查Redis慢日志、优化命令、排查大对象和关闭THP,以及使用`redis monitor`和火焰图进行诊断和性能优化。
订阅专栏 解锁全文
1540

被折叠的 条评论
为什么被折叠?



