跳至主要內容
Spring-session线上问题复盘

spring-session线上问题复盘

发现问题流程

  1. 基础服务的CPU告警,当时对基础服务进行了重启操作,重启之后负载下降暂时恢复。
  2. 10时50分dba查看到redis 实时连接数有点高超过2500,还有一些慢查询,后面redis也开始告警
  3. 打印服务出现异常的网络连接,立即对服务器进行了重启操作。
  4. 基础服务出现CPU告警,然后又对相关的基础服务进行重启操作。
  5. 打印服务负载情况大家认为是打印服务导致了整个系统缓慢,紧急对打印服务进行了节点扩展,结果是11时30几分反馈系统能使用,整体操作上比较卡。
  6. redis 服务CPU告警
  7. 14时12分又开始收到用户反馈系统卡,无法正常打开页面访问,其他服务都出现相同情况,当时的现象是出现redis 的QPS急速飙升高峰到80000+
  8. 根据当时的现象表现整个系统很卡,redis 的QPS很高是平时的好几倍,redis的连接数也很高快到达了5000,日志上也有出现各种redis连接超时,甚至有出现redis oom 等报错。当时大家都比较怀疑是redis出现了问题,导致系统变慢变卡,然后对redis的存储对象进行了排查,没有发现特别大的存储key,又对存储的key数量进行了排查(思路是查找出key前缀相同排名前几的key,然后去分析具体是什么操作引起的)。经过dba 的查看分析发现 spring:session:sessions 开头的key占用了将近600万,这个key主要是spring session使用redis存储产生的,非常的异常,为什么会产生这么多。

coding故障复盘大约 4 分钟