数据库
首页 > 数据库> > 记一次线上环境redis响应慢,导致雪崩

记一次线上环境redis响应慢,导致雪崩

作者:互联网

故障原因如下,redis因为cpu激增,导致响应慢,断开了和java的连接,正好在k8s健康检查的时间内,检查到java服务不正常,k8s干掉了java服务,导致业务不正常。

  1. 首先防止雪崩效应,避免雪球越滚越大,网络波动是我们避免不了的,我们也不能因为这个原因,去加大k8s检查间隙时间或者关闭k8s的健康检查,不能因为丢了西瓜去捡芝麻,所以更合适的解决办法是,springboot去做健康检查的时候,关闭掉对redis的检查,不要因为redis的问题,导致java服务雪崩。
management.health.redis.enabled=false

2.redis cpu激增检查,cpu飙高,我们要分情况来选择合适的方法排查,如果是一直很高,直接查看信息,可能线程死锁了等,如果是一会儿高,一会儿降低,火焰图更适合。

  1. 先检查redis的慢日志,slowlog get 5,如果有慢日志,使用keys和keys*的去匹配,我们要进行改正代码。推荐使用scan来代替keys
    在这里插入图片描述
    4.如果优化了redis命令,cpu还是下不来,我们可以使用redis的官方建议,排查下,使用以下命令
latency doctor

结果如下

我们可以看到有大对象被删除,那怎么去找大对象呢,等下说。

THP需要关闭,什么是THP可以百度下,关闭它需要重启redis服务。

monitor > redis-monitor.txt
perf record -g --pid $(grep redis-server) -F 999 -- sleep 60

设置最小调用图包含阈值为 0.5%

perf report -g "graph,0.5,caller"

生成火焰图

git clone https://github.com/brendangregg/FlameGraph.git
perf script > redis.perf.stacks
stackcollapse-perf.pl redis.perf.stacks > redis.folded.stacks
flamegraph.pl redis.folded.stacks > redis.svg

标签:java,perf,redis,monitor,THP,雪崩,k8s,线上
来源: https://blog.csdn.net/qq_28880087/article/details/120827816