Jboss EAP 6.2 连接池中的可用计数减少
Jboss EAP 6.2 AvailableCount in connection pool decresing
1.We 有一个 J2EE 应用程序 在 Jboss EAP-6.2 上使用 Servlet 和 JSP 运行,并使用 SQL 服务器 数据库。
2.Everything 在用户数为 20 的 UAT 系统上很好,但是当我们将相同的应用程序移动到用户数超过 80 的生产系统时,我们在 Jboss 中面临有关连接的问题池计数。此计数持续减少,8-10 小时后,用户无法登录系统,因此我们需要通过单击“配置文件”选项卡中“数据源”部分中的“刷新”按钮手动刷新连接池。
3.We 已检查没有连接泄漏,因为我们已经关闭了 Finally{ } 部分中的所有数据库连接。
4.We 还增加了 STANDALONE.XML 文件中的最大最小池大小,并添加了 RedHat site.Please 推荐的一些验证标签。请参阅附件。
问题- 有什么方法可以使 Jboss 管理员控制台上可用的刷新按钮功能自动化,以便自动销毁空闲连接。
已附加 - Jboss 连接池的控制台视图。
idle-timeout-minutes 是空闲 (unreserved/unused) 连接关闭前的最长时间(以分钟为单位)。实际的最长时间取决于 idleRemover 扫描时间,它是任何池的最小空闲超时分钟数的一半。
空闲连接在 :
之后被 IdleRemover 删除
空闲超时分钟数 + 1/2(空闲超时分钟数)
idle-timeout-minutes 属性 应配置为大于 0 但小于数据库服务器、网络防火墙等指定的超时期限的值,以允许 [=19] 正常终止=] 在空闲连接被外部切断之前。
以下建议首先调整您的数据源。
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 超时应比数据库服务器上配置的超时期限 lower/less 允许 JBoss 正常超时连接而不是允许它们在外部超时。
5# 应用程序组件保留的连接不受 JBoss 超时的影响。 DataSource.getConnection() 获得的连接不能被 JBoss 超时,直到它们返回到池中(通过调用 Connection.close())并且在池中保持空闲超时未使用-分钟。 DataSource.getConnection() 和 Connection.close() 之间的连接状态为正在使用,即使没有数据库命令处于活动状态也是如此,因为这些连接由应用程序代码拥有。
应用以上内容并检查行为
1.We 有一个 J2EE 应用程序 在 Jboss EAP-6.2 上使用 Servlet 和 JSP 运行,并使用 SQL 服务器 数据库。
2.Everything 在用户数为 20 的 UAT 系统上很好,但是当我们将相同的应用程序移动到用户数超过 80 的生产系统时,我们在 Jboss 中面临有关连接的问题池计数。此计数持续减少,8-10 小时后,用户无法登录系统,因此我们需要通过单击“配置文件”选项卡中“数据源”部分中的“刷新”按钮手动刷新连接池。
3.We 已检查没有连接泄漏,因为我们已经关闭了 Finally{ } 部分中的所有数据库连接。
4.We 还增加了 STANDALONE.XML 文件中的最大最小池大小,并添加了 RedHat site.Please 推荐的一些验证标签。请参阅附件。
问题- 有什么方法可以使 Jboss 管理员控制台上可用的刷新按钮功能自动化,以便自动销毁空闲连接。
已附加 - Jboss 连接池的控制台视图。
idle-timeout-minutes 是空闲 (unreserved/unused) 连接关闭前的最长时间(以分钟为单位)。实际的最长时间取决于 idleRemover 扫描时间,它是任何池的最小空闲超时分钟数的一半。
空闲连接在 :
之后被 IdleRemover 删除空闲超时分钟数 + 1/2(空闲超时分钟数)
idle-timeout-minutes 属性 应配置为大于 0 但小于数据库服务器、网络防火墙等指定的超时期限的值,以允许 [=19] 正常终止=] 在空闲连接被外部切断之前。
以下建议首先调整您的数据源。
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 超时应比数据库服务器上配置的超时期限 lower/less 允许 JBoss 正常超时连接而不是允许它们在外部超时。
5# 应用程序组件保留的连接不受 JBoss 超时的影响。 DataSource.getConnection() 获得的连接不能被 JBoss 超时,直到它们返回到池中(通过调用 Connection.close())并且在池中保持空闲超时未使用-分钟。 DataSource.getConnection() 和 Connection.close() 之间的连接状态为正在使用,即使没有数据库命令处于活动状态也是如此,因为这些连接由应用程序代码拥有。
应用以上内容并检查行为