tomcat hang up 排查笔记

项目上线后,一个接口导致Tomcat所有线程hang住。排查发现问题与线程池和数据库连接池有关。尽管数据库连接未耗尽,但所有线程在尝试获取Druid数据库连接时被阻塞。问题在于Spring Boot的`spring.jpa.open-in-view`配置,它导致请求在返回前一直持有数据库连接。解决办法是避免在线程池内获取数据库连接,设置连接池超时时间以防止死锁。
摘要由CSDN通过智能技术生成

问题背景: 项目上线后一切顺利,直至进入一个页面请求到那个接口,短时间内tomcat所有线程全部hang住,页面无法响应.

猜测: 此接口相较上个版本将一部分耗时久的地方采用线程池去异步缩短时间,猜测问题出在线程池上面,将代码改回单线程后,
一切又都好了,那么问题无疑就是线程池引起的.

肇事线程池如下

ExecutorService queryExecutorService = new ThreadPoolExecutor(16, 32, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(20), new ThreadFactory() {
   
        int count <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值