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”,并且在“背景”时不需要“ validate-on-match” -validation”为真。
在负载平衡的不同Windows服务器中具有相同代码库和数据源设置的另一个JBoss可以很好地工作。
连接到db服务器时遇到问题的服务器在不同的网络中,并且此连接问题是由其他进程阻塞网络带宽引起的。此连接问题是在某个时间发生的,这给问题的根源提供了一些提示。占用大部分带宽的程序已推迟到几个小时后才能运行,我相信这可以解决问题。
同时,在进行上述修复之前,我还将“数据源”设置从5分钟更新为1分钟,
<background-validation-millis>60000</background-validation-millis>
不确定,无论如何这是否有帮助。但是我注意到,在进行此更改之前,JBoss数据库池很快就装满了,并且JBoss崩溃了,并且在此数据源设置更新之后,这种情况并未发生。
修复程序中的任何一个都可以解决问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句