Java-Orcale无法为事务打开JDBC连接
我正在从事一个非常非常大但实施不力的项目,我们有一个与de数据库相关的重大性能问题。 我们正在使用Oracle、exadata和bla-bla-bla。 应用服务器:tomcat 潜水员:ojdbc6 下一步配置:Java-Orcale无法为事务打开JDBC连接,java,oracle,tomcat,ojdbc,Java,Oracle,Tomcat,Ojdbc,我正在从事一个非常非常大但实施不力的项目,我们有一个与de数据库相关的重大性能问题。 我们正在使用Oracle、exadata和bla-bla-bla。 应用服务器:tomcat 潜水员:ojdbc6 下一步配置: <property name="connectionCachingEnabled" value="true" /> <property name="connectionCacheProperties">
<property name="connectionCachingEnabled" value="true" />
<property name="connectionCacheProperties">
<value>
MinLimit:180
MaxLimit:200
InitialLimit:50
ConnectionWaitTimeout:120
InactivityTimeout:180
....
最低限额:180
最高限额:200
首字母上限:50
ConnectionWaitTimeout:120
不活动时间:180
....
该应用程序几乎有15个模块独立运行,但也有一些模块包含其他模块并使用其数据源
是的,我知道。。。你在想什么。当我到达的时候,已经是这样了,我需要修补它,同时团队也在努力
重组
问题是,15个模块应该有200个连接,但有了这个意大利面,每个模块也需要包括的模块连接
这是一道连接汤强>
但在这一点上,问题是一些模块无法接受其200个连接,因为数据库没有更多的资源,所以。。。。与“ConnectionWaitTimeout”配置相关,它向池返回一个空值,并显示下一条消息:
无法为事务打开JDBC连接;嵌套异常为java.lang.IllegalArgumentException:连接不能为null
检查数据库大多数模块需要200个连接,但只有7个活动和197个非活动
我找不到合适的配置来释放不活动的配置
我使用了InactivityTimeout和放弃ConnectionTimeout,但问题仍然存在。不分析应用程序,我们就可以推测为什么会出现此问题
A) 应用程序确实在超时期间查询数据库。
B) 池已回收连接,应用程序应已捕获异常并重试
我建议您了解其中一个模块中的代码,以了解连接使用模式。
MinLimit:180
听起来好像池将始终打开至少180个连接(并将它们保持打开状态)。将其设置为例如5会改变什么吗?当我们将其更改为较低的值时,结果是sameYes,您是对的,应用程序的负载峰值会导致数据库消耗,但我需要找到在峰值后断开连接的方法。