【发布时间】:2020-03-10 14:35:38
【问题描述】:
我们最近将 JBoss 版本中的 spring-mvc 应用程序从 4 升级到了 JBoss7.1.0.EAP。还有 Java6 到 Java8 以及 hibernate5.1 以及从 SunOS 到 RedHat Linux7.1 的基础设施。 Oracle11g 数据库没有升级。我们使用了standalone.xml 来自JBoss 的连接池。应用程序中没有代码更改,只是提升和转移。 在生产环境中,我们注意到创建了 100 个不活动的 Oracle 会话,并且很少有会话长时间锁定并阻塞重要表,从而使应用程序运行缓慢。 我们在 JBoss 中使用了 ojdbc14.jar。
是否有任何补救措施或方法来弄清楚为什么会发生这种情况以及如何解决这个问题。
Standalone.xml 中的代码
<datasource jta="true" jndi-name="xxxxxxxxx" pool-name="xxxxxxxxx" enabled="true" use-ccm="false">
<connection-url>jdbc:Oracle:thin:xxxxxxxxxxx</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver>oracle</driver>
<pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>500</max-pool-size>
</pool>
<security>
<user-name>xxxxxxx</user-name>
<password>xxxxxxxx</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<background-validation>true</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
</datasource>
【问题讨论】:
-
您允许 JBoss 创建最多 500 个连接 - 我没有看到任何会关闭空闲连接的配置
-
与您的问题无关:
ojdbc14.jar旨在与 Java 1.4 一起使用,如果您使用 Java,您应该至少使用ojdbc6.jar或更好的ojdbc7.jar8 与 Oracle 11 -
standalone.xml 中是否有任何设置可以关闭非活动会话。在代码库中,每当我们打开连接时,我们都会特意关闭它。并且在这次迁移过程中代码没有变化
-
是的..将在服务器中将其更改为 ojdbc7.jar。
标签: java hibernate java-8 oracle11g jboss