JBoss 偶尔无法连接到数据库

JBoss occasionally couldn't connect to database

JBoss as7.1.1
MS SQL Server 2012

我的 JBoss 中设置了以下数据源,有时它在连接到数据库时出现问题,它一直在尝试但无法连接。

<datasource jta="false" jndi-name="java:jboss/WebDataSource" pool-name="WebDataSource" enabled="true" use-ccm="false">
    <connection-url>jdbc:sqlserver://proddbserver:1433;DATABASENAME=proddb;sendStringParametersAsUnicode=false;</connection-url>
    <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    <driver>sqljdbc4.jar</driver>
    <new-connection-sql>SELECT 1</new-connection-sql>
    <pool>
        <min-pool-size>100</min-pool-size>
        <max-pool-size>300</max-pool-size>
        <prefill>false</prefill>
        <use-strict-min>false</use-strict-min>
        <flush-strategy>FailingConnectionOnly</flush-strategy>
    </pool>
    <security>
        <user-name>user</user-name>
        <password>pwd</password>
    </security>
    <validation>
        <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
        <validate-on-match>true</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>300000</background-validation-millis>
        <use-fast-fail>true</use-fast-fail>
    </validation>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

我在本地 JBoss 尝试了相同的设置指向测试数据库,当没有数据库连接时,如果我尝试登录门户,门户 returns 返回错误消息立即,因为它无法与数据库对话,而在生产中,当我尝试登录门户时,它会继续尝试。

在我的本地环境下,拔掉网线,尝试访问有数据库连接的页面,失败 连接,然后插回网线,进入页面,可以成功取回数据。也试过停止数据库,重新启动它,仍然可以从门户成功访问。

重新启动生产 JBoss 修复了这个问题。可能是什么问题呢?在不重启的情况下是否有任何其他可用的修复程序?我检查了许多与该主题相关的 SO 帖子,并注意到几乎没有什么区别,例如使用 'valid-connection-checker' 而不是 'check-valid-connection-sql' 和 'validate-on-match' 在 'background-validation' 为真时不需要。

另一个 JBoss 在不同的 windows 服务器中具有相同的代码库和数据源设置,负载平衡,工作得很好。

连接到数据库服务器时出现问题的服务器位于不同的网络中,此连接问题是由 网络带宽被其他进程阻塞。此连接问题在特定时间发生,这给了 一些提示问题出在哪里。消耗大部分带宽的程序在下班后被推迟到 运行,我相信这是 解决了问题。

同时,在进行上述修复之前,我还将 'datasource' 设置从 5 分钟更新为 1 分钟,

<background-validation-millis>60000</background-validation-millis>    

不确定这是否有帮助。但我注意到,在此更改之前,JBoss 数据库池很快就被填满,JBoss 崩溃了,而在此数据源设置更新之后并没有发生。

任何一个修复程序都可以解决问题。