Wildfly Idle/Hung 连接超时

Wildfly Idle/Hung connection timeout

我在 standalone.xml 中定义了一个连接,以便能够在空闲超时时释放连接。我注意到有时即使查询完成后连接也不会从 SQL 服务器数据库释放。我想解决的另一种情况是如何释放挂起查询的连接,即使它已从 TEIID 中取消。 目前我必须使用 WILDFLY CLI 手动终止会话以释放连接。

<datasource jndi-name="java:/SourceModel" pool-name="SourceModel" enabled="true">
                    <connection-url>jdbc:sqlserver://server:1433;integratedSecurity=true;authenticationScheme=NTLM;domain=DOMAIN;databaseName=DB</connection-url>
                    <driver>sqlserver</driver>
                    <pool>
                        <min-pool-size>0</min-pool-size>
                        <max-pool-size>60</max-pool-size>
                        <prefill>true</prefill>
                        <use-strict-min>true</use-strict-min>
                        <flush-strategy>IdleConnections</flush-strategy>
                    </pool>
                    <security>
                        <security-domain>SourceModelSecurityDomain</security-domain>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
                        <check-valid-connection-sql>select 1</check-valid-connection-sql>
                        <validate-on-match>true</validate-on-match>
                        <use-fast-fail>false</use-fast-fail>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter"/>
                    </validation>
                    <timeout>
                        <blocking-timeout-millis>30000</blocking-timeout-millis>
                        <idle-timeout-minutes>30</idle-timeout-minutes>
                    </timeout>
                    <statement>
                        <track-statements>false</track-statements>
                        <prepared-statement-cache-size>400</prepared-statement-cache-size>
                        <share-prepared-statements>true</share-prepared-statements>
                    </statement>
</datasource>

您的 Jboss 配置为在 30 分钟后关闭空闲连接。实际的最长时间取决于 idleRemover 扫描时间,它是任何池的最小空闲超时分钟数的一半。在您的情况下,空闲连接移除器每 15 分钟运行一次。 idle-timeout-minutes 属性 应该配置为大于 0 但小于数据库服务器、网络防火墙等指定的超时时间的值。如果你想更快地删除空闲连接,你必须进行相应配置。