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

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

【故障表现】

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

【处理过程】

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、梳理系统内可能存在的风险的接口,优化

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值