首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java无法为事务打开JDBC连接。

Java无法为事务打开JDBC连接。
EN

Stack Overflow用户
提问于 2020-10-08 11:56:52
回答 1查看 738关注 0票数 0

我正在处理一个非常大但实现很差的项目,我们有一个与Database相关的性能问题。我们使用的是甲骨文,。应用服务器: tomcat潜水员: ojdbc6

接下来的吐露是:

代码语言:javascript
运行
复制
<property name="connectionCachingEnabled" value="true" />
<property name="connectionCacheProperties">
<value>
MinLimit:180
MaxLimit:200
InitialLimit:50
ConnectionWaitTimeout:120
InactivityTimeout:180
....

应用程序有几乎15个独立运行的模块,但也有一些模块包含其他模块并使用它们的数据源。

是的我知道。你在想什么。当我到达的时候,它已经是这样了,我需要修补它,同时团队在重新设计时非常努力。

问题是,这15个模块应该有200个连接,但是有了这个意大利面,每个模块也都包含了连接。

,这是一个连接汤!

但在这一点上,问题是,一些模块不能接受他们的200个连接,因为数据库没有更多的资源,所以.与"ConnectionWaitTimeout“配置相关的是,它向池返回一个漂亮的null,下一条消息如下:

无法为事务打开JDBC连接;嵌套的异常为java.lang.IllegalArgumentException:连接不能为空

在数据库上检查,大多数模块需要200个连接,但只有7个活动模块和197个非活动模块。

我找不到正确的配置来释放不活动的配置。

我使用了InactivityTimeout和AbandonedConnectionTimeout,但问题仍然存在。

EN

回答 1

Stack Overflow用户

发布于 2020-10-08 14:00:27

在不分析应用程序的情况下,我们只能推测为什么会发生这个问题。

自创建了197个连接(超过180个)以来,应用程序似乎已经从池中请求了这么多连接。由于非活动超时没有帮助,因此我们必须假设application.

  • Now仍然保留了这些连接,因为放弃超时没有帮助,有两种可能性。

( A)应用程序确实是在超时期间查询DB。

( B)池恢复了连接,应用程序应该捕获异常并重新尝试

我建议您理解其中一个模块中的代码,以了解连接使用模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64262014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档