2017-03-08 73 views
0

1.我们有使用servlet &的JSP在JBoss EAP-6.2上运行,并使用SQL 服务器数据库J2EE应用程序的Jboss EAP 6.2 AvailableCount连接池渐渐收窄

2.用户数为20的UAT系统上的一切都很好,但当我们将相同的应用程序移至生产系统时,用户数超过80个,我们在Jboss中就连接池数问题面临问题。此计数持续下降,在8-10小时后,用户无法在系统中登录,因此我们需要通过单击“配置文件”选项卡中“数据源”部分中的“刷新”按钮手动刷新连接池。

3.我们检查了没有连接泄漏,因为我们已经关闭了最后{}部分中的所有数据库连接。

4.我们还增加了STANDALONE.XML文件中的最大/最小池大小,并添加了一些由RedHat站点推荐的验证标签。请参阅附件。

问题 - 有什么办法可以使Jboss Adminstrator控制台上的Flush按钮功能自动化,以便空闲连接会自动销毁。

附加 - 连接池的Jboss控制台视图。 enter image description here

enter image description here

回答

0

空闲超时分钟为最大时间,以分钟,空闲之前(未预留/未使用)连接被关闭。实际的最长时间取决于idleRemover扫描时间,这是任何池的最小空闲超时 - 分钟的一半。

空闲连接由IdleRemover之后去除:

空闲超时分钟+ 1/2(空闲超时分钟)

空闲超时分钟属性应被配置为一个值大于0但小于数据库服务器,网络防火墙等指定的超时时间,以允许在外部切断空闲连接之前通过JBoss进行正常终止。

0

首先有以下建议来调整您的数据源。

1#有一个已知的问题充液=在释放行真正

<prefill>true</prefill> 

请此设置为false。

2#使用下面的数据源连接验证机制:

<validation> 
    <validate-on-match>true</validate-on-match> 
    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker" /> 
</validation> 

3#这不是推荐以下为数据源:

- jta="false" : It should be true 
- use-ccm="false" : It should be true 

4#你可能想确保你的数据库服务器配置到而不是空闲时间少于5分钟的超时连接(JBoss中数据源的配置超时时间)。JBoss超时应该低于/小于数据库服务器上配置的超时期限,以允许JBoss正常超时连接,而不是允许它们在外部超时。

5#应用程序组件保留的连接不受JBoss的超时限制。通过DataSource.getConnection()获得的连接直到它们返回到池(通过调用Connection.close())并在池中保持未使用状态直到idle-timeout-minutes才能被JBoss超时。即使没有数据库命令处于活动状态,连接状态仍在DataSource.getConnection()和Connection.close()之间使用,因为这些连接由应用程序代码拥有。

应用上述并检查行为