1.我们有一个 J2EE应用程序使用Servlets&在Jboss EAP-6.2上运行的JSP,并使用 SQL server 数据库。
2.在用户数为20的UAT系统上一切都很好但是当我们将相同的应用程序移动到用户数量超过80的生产系统时,我们在Jboss中遇到有关连接池数量的问题。此计数继续减少,8-10小时后,用户无法登录系统,因此我们需要通过单击“配置文件”选项卡中“数据源”部分中的“刷新”按钮手动刷新连接池。
3.我们检查了没有连接泄漏,因为我们已经关闭了最后{}部分中的所有数据库连接。
4.我们还增加了STANDALONE.XML文件中的最大最小池大小,并添加了RedHat网站推荐的一些验证标签。请参阅附件。
问题 - 我们是否有办法自动化Jboss Adminstrator控制台上提供的Flush按钮功能,以便自动销毁空闲连接。
答案 0 :(得分:0)
idle-timeout-minutes是空闲(未预留/未使用)连接关闭之前的最长时间(以分钟为单位)。实际的最大时间取决于idleRemover扫描时间,它是任何池的最小空闲超时分钟的一半。
在以下情况之后,IdleRemover会删除空闲连接:
idle-timeout-minutes + 1/2(idle-timeout-minutes)
idle-timeout-minutes属性应配置为大于0但小于数据库服务器,网络防火墙等上指定的超时时间的值,以允许JBoss在外部切断空闲连接之前正常终止。< / p>
答案 1 :(得分:0)
以下建议首先调整数据源。
1#在发布行
中存在prefill = true的已知问题<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。连接状态是DataSource.getConnection()和Connection.close()之间的InUse,即使没有数据库命令处于活动状态,因为这些连接由应用程序代码拥有。
应用上述内容并检查行为