慢查询过多将数据库连接用完导致后续请求阻塞

博客讲述了由于执行多个慢查询导致数据库连接数耗尽,进而影响中间服务和Consul心跳检测,造成服务中断的故障。故障表现为所有到中间层的请求报错,监控系统发出大量警告。处理过程包括定位问题到特定SQL,优化接口并增加连接数。原因分析指出慢查询未及时释放连接,导致请求阻塞。改进措施包括接口优化、提升连接数和风险接口梳理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【影响范围】
中间层服务挂了,导致所有请求中间服务的接口无服务响应。部分功能不可用

【故障表现】

所有到中间层的请求全部报错,没有服务响应,监控群里面大量报警

【处理过程】

1、11.12左右,业务服务、大数据服务,出现大量报警,提示

“java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: mm”

2、打开 pinpoint 工具 查看 数据源监控情况
在这里插入图片描述

发现 中间层服务里面 查询 某数据库库 数据的连接数被用完了,并且持续了7分钟左右

3、此时 又发现 sql慢查询报警 此报警频繁出现,时间点吻合,说明就是该sql执行导致连接数被用完,并且执行时间过长(120多秒)从而导致后续的请求处于等待状态,包括consul的心跳检测请求, 故报不可用的中间服务

【原因分析】
执行多个慢查询,慢查询时间持续长,将连接数用完,没有及时释放,导致之后的请求阻塞在获取数据库连接上,包括consul的心跳检测请求,心跳检测不通过,在consul处于不可用状态,导致了事故

【改进措施】
1、优化涉及接口 已解决
2、增加连接数
3、梳理系统内可能存在的风险的接口,优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值