1.我们有一个J2EE应用程序,它使用Servlets和JSP运行在Jboss 6.2上,并使用 server数据库。
2.在用户计数为20的UAT系统上,一切都很好,但当我们将同一应用程序转移到用户数量超过80的生产系统时,我们在Jboss中面临连接池计数的问题。这个计数持续下降,在8-10小时后,用户无法登录到系统中,因此我们需要通过单击Profile选项卡中Datasource部分中可用的刷新按钮手动刷新连接池。
3.我们检查了是否有连接泄漏,因为我们已经关闭了最后{}部分中的所有数据库连接。
4.我们还增加了STANDALONE.XML文件中的最大最小池大小,并添加了RedHat site.Please推荐的一些验证标记,参见附件文件。
问题-有什么方法可以使Jboss控制台上可用的刷新按钮功能自动化,这样空闲连接就会被自动销毁。
连接池的Jboss控制台视图。


发布于 2017-03-09 19:02:09
空闲超时分钟是关闭空闲(无保留/未使用)连接之前的最长时间(以分钟为单位)。实际的最大时间取决于idleRemover扫描时间,它是任何池最小空闲超时分钟的一半。
IdleRemover在以下操作之后删除空闲连接:
空闲-超时-分钟+ 1/2 (空闲-超时-分钟)
应将空闲超时分钟属性配置为大于0但小于在数据库服务器、网络防火墙等上指定的超时时间的值,以便允许JBoss在外部断开空闲连接之前优雅地终止。
发布于 2017-03-12 16:30:33
下面是对数据源进行优化的建议。
1#在您的发布行中存在一个已知的预填充= true的问题
<prefill>true</prefill>请把这个设为假。
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 true4#您可能希望确保数据库服务器配置为空闲时间小于5分钟的超时连接(JBoss中的数据源的配置超时时间)。JBoss超时应该低于/小于数据库服务器上配置的超时时间,以便允许JBoss优雅地超时连接,而不是允许它们在外部超时。
由应用程序组件保留的5#连接不受JBoss超时的限制。DataSource.getConnection()获得的连接直到返回到池(通过调用Connection.close())并在池中空闲超时分钟之后才能被JBoss超时。即使没有数据库命令活动,DataSource.getConnection()和Connection.close()之间的连接状态也是Connection.close(),因为这些连接属于应用程序代码。
应用上述方法并检查行为
https://stackoverflow.com/questions/42664706
复制相似问题