高并发接口超时时间过长,导致服务雪崩

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 高频访问接口超时时间过长,导致服务雪崩

故障现象

问题影响现象:无法登录

故障处理过程

11:12监控群收到响应时间异常告警

image.png


11:16测试查看接口响应情况,发现获取开关接口响应缓慢

image.png


11:16 xxx-pro出现平均响应时间超过2s告警,org服务出现平均响应时间超过100ms告警

image.png

image.png



11:18出现running low告警,主要出现在license服务

image.png


测试查看rds一键诊断,发现有异常会话堆积

image.png


11:25测试查看慢sql,发现凭证相关慢sql执行时间较长

image.png


11:31研发找到慢sql

image.png

11:34 研发分析慢sql发现有全表扫描

11:35 测试查看出现告警的license和org服务,发现license响应时间最慢的集中在获取开关接口上

image.png

11:38org服务响应时间恢复正常

image.png

11:39 测试查看1小时内license和org服务的ERROR级别日志,发现存在ice调用超时的情况

image.png

猜测可能和boss有关系

11:56   测试kill掉异常会话,但是系统还是无法登录

11:57  研发分析日志,发现是ice的连接超时,boss是通过http访问,志成也看了boss资源,属于正常使用,排除是boss异常引起无法登录

12:02  研发根据日志分析可能是org的bosssvrclient访问auth服务的ice接口出现问题

12:11 运维分析了org调用auth服务ice接口的链路,发现可以正常访问

12:12  运维重启license和org服务

12:16 系统依然无法登录

12:18 运维查看日志,发现有token验证失败的报错

image.png

12:20 测试查看报错日志,发现有grpc调用超时的异常

image.png

12:21运维验证xxx-pro可以正常访问credit服务

12:22运维开始重启xxxx-pro

12:32 xxx-pro完成重启,系统恢复正常访问

12:43 测试查看部分服务近3个小时的QPS,发现11:10左右开始有断崖式下跌

image.png

image.png


13:29 研发查看org、xxxx-pro和common-data平均响应时间,发现org和xxxx-pro在11:10-11:30时间段内有明显飙升,而common-data没有明显变慢

image.png

image.png

image.png


13:36 研发查看故障时间段org服务慢接口

image.png


13:41研发查看grafana监控,发现common-data和org有一台服务器load异常


image.png

image.png


查看慢调用的链路追踪,发现common-data调用存在没有正常返回的情况

image.png


这里的慢请求是去调用common-data服务的,但是没有看到common-data的链路,说明没有正常返回

common-data的10.xxxx.xxx.102这台服务器从11:11:05开始就没有处理完的请求了

image.png


xxxx-pro调用grpc超时报了很多次

image.png


运维告警群在11:18的时候有告警,对应的是common-data的10.xxx.13.xxx这台服务器

image.png

在12:12才恢复正常

image.png


这段时间内访问到xxxx.xxx.xxxxx 这台服务器的common-data接口的请求都出现了超时的情况


故障原因

common-data有一台服务器load出现异常引起插件无响应,而xxxxx-xxx依然有对这台异常服务器的ice和grpc调用,导致调用超时,系统无法正常操作


反思与改进方案

修复方案:

手动kill异常会话并重启license、org和xxxxx-pro服务


改进方案:

1.故障值班人员如果遇到特殊情况无法及时介入处理时需要提前安排好backup

2.目前暂时无法从根本上处理单台服务器故障未进行转移的问题,可以增加超时异常告警,短时间内超过一定数量的rpc调用超时需要在业务告警群中有相应的通知,告警方案需要补充到故障应急小组工作指南中

3.xxxx-data、organization等基础服务中的高频访问接口在客户端访问入口处把请求超时时间调小,需要根据接口的平均响应时间设置一个合理的超时时间

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
存储 Java
高并发编程之多线程锁和Callable&Future 接口
高并发编程之多线程锁和Callable&Future 接口
83 1
|
7月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
171 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
分布式计算 负载均衡 算法
分布式调用与高并发处理 Zookeeper分布式协调服务(一)
分布式调用与高并发处理 Zookeeper分布式协调服务
|
4月前
|
存储 监控 Java
近亿级用户体量高并发实战:大促前压测干崩近百个服务引起的深度反思!
几年前,数百个服务,将堆内存从28GB升配到36GB,引发系统全面OOM的事件。
105 12
|
5月前
|
负载均衡 微服务
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
|
5月前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
71 0
|
5月前
|
缓存 Java 数据库连接
使用Java构建一个高并发的网络服务
使用Java构建一个高并发的网络服务
高并发服务优化篇:详解一次由读写锁引起的内存泄漏
JVM相关的异常,一直是一线研发比较头疼的问题。因为对于业务代码,JVM的运行基本算是黑盒,当异常发生时,较难直观地看到和找到问题所在,这也是我们一直要研究其内部逻辑的原因。
|
7月前
|
Java
高并发编程之什么是 Lock 接口
高并发编程之什么是 Lock 接口
68 1
|
7月前
|
存储 消息中间件 Java
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现
在深入研究了 **“【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现”** 设计实现后,我们意识到,尽管API网关为服务商提供了高效的数据获取手段,但实时数据的获取仍然是一个亟待解决的问题。
102 1
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现