JBoss偶尔无法连接到数据库

时间:2016-07-21 08:14:32

标签: java sql-server jboss7.x

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中尝试了相同的设置指向测试数据库,当没有数据库连接时,如果我尝试登录到门户网站,门户网站会立即返回错误消息,因为它无法与数据库,然而,在我尝试登录门户网站的生产中,它一直在尝试。

在我的本地环境中,拔掉网络电缆,尝试访问具有数据库连接的页面,但它失败了 连接,然后插回网络电缆,访问页面,可以成功检索数据。还尝试通过停止数据库,启动它并仍然可以从门户成功访问。

重启生产JBoss解决了这个问题。可能是什么问题呢?没有重启会有没有其他修复方法?我检查了许多与此主题相关的SO帖子,并注意到使用'valid-connection-checker'代替'check-valid-connection-sql'和'valid-on-match'在'背景'时不需要的差异很少-validation'是真的。

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

1 个答案:

答案 0 :(得分:0)

连接到数据库服务器时遇到问题的服务器位于不同的网络中,并且此连接问题是由此引起的 网络带宽被其他进程阻塞。这种连接问题发生在某个时间,这给了 一些暗示问题出在哪里。占用大部分带宽的程序被推迟到下班后运行,我相信这一点 解决了这个问题。

同时,在进行上述修复之前,我还更新了数据源&#39;设置为5分钟1分钟,

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

不确定,无论如何这都有帮助。但是我注意到,在这次更改之前,JBoss数据库池很快就填满了,JBoss崩溃了,在这个数据源设置更新后没有发生。

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