线上bug导致tomcat 线程池堆积

您所在的位置:网站首页 504页面 线上bug导致tomcat 线程池堆积

线上bug导致tomcat 线程池堆积

2023-07-24 04:25| 来源: 网络整理| 查看: 265

线上bug导致tomcat 线程池堆积 事情经过

今天早上项目搜索页偶现504 页面!

504

马上查看线上日志 发现大量的 ConnectionTimeOut 异常. 里面跟踪下代码

RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000).build();

ConnectionTimeOut 居然是10s

这个时候能确定2个问题: - 第三方接口存在不可用情况 - 自身应用timeout设置过长 难道就是这个原因导致的? 仔细分析了下 发现 出现ConnectionTimeOut异常的地方并 不是搜索页的功能.而是一个依赖于第三方接口用户绑定功能. 这个时候很迷惑了. 到底是什么原因呢?

查看线程堆栈

通过查看线程堆栈 这里写图片描述

发现大量的线程都wait在httpGet在第三方接口上

我们看下线程树 这里写图片描述

发现一共有920上下的线程数目

我们在来看下容器(tomcat)的线程数 这里写图片描述

容器处理请求的线程数最大是1000个. 这个时候我们就可以大胆猜测 就是大量的第三方接口请求 导致耗光了容器的线程池.所以其他请过过来, 只能等待线程池中资源释放 才能正常处理.

验证 修改connectionTimeOut时间为1000重启应用 ok 业务恢复正常了。线程数也降下来了


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3