解决dbcp2线程池GenericObjectPool.borrowObject阻塞问题

在测试环境中,由于dbcp2线程池配置不当,导致在高并发时出现接口超时,通过jstack分析发现线程WAITING状态。问题在于未设置`jdbc.maxTotal`,使得超过8个连接后,新请求会无限等待。解决方案是增加`jdbc.maxTotal`配置,并设置`jdbc.maxWaitMillis`以限制等待时间,避免阻塞。
摘要由CSDN通过智能技术生成

问题:

在我们测试环境,在测试量大的时候偶尔就出现所有接口超时问题;

开始排查,挑了其中一个接口详细加上日志,发现调service方法执行简单的保存SQL竟然耗时好几分钟,故而开始怀疑是数据库问题,单后面看日志发现在几分钟后所有SQL又在几十毫秒里执行完了,而且也没听其他人员反馈数据库问题,故觉得应该不大可能是数据库问题。

执行命令  jstack <pid> >jstack01.text;

堆栈信息显示多个线程 WAITING

144627_NwL4_559627.png

那只能查看dbcp2的源码了,看看这到底干了啥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值