关于数据源:Jboss Wildfly 在不使用时不关闭连接

Jboss Wildfly not closing connections when not in use

我正在使用具有以下配置超时的 jboss 服务器:-

1
2
3
4
5
6
7
8
<timeout>
    <idle-timeout-minutes>1</idle-timeout-minutes>
</timeout>
<min-pool-size>10</min-pool-size>
<max-pool-size>30</max-pool-size>
[cc]true</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>

现在,一旦服务器达到最大负载(30 个连接),从 jboss 的 CLI 获得的数据源详细信息就会报告 Active Count = 30 和 Available Count = 30。

但是,即使将服务器请求减少到 1,活动计数和可用计数仍报告 30 作为它们的值。

预期:- 数字应该减少,理想情况下,应该只使用预填充池中的 1 个连接,而不是保持所有连接处于唤醒状态!!

我看到以下日志:-

17:34:12,359 DEBUG [org.jboss.jca.core.connectionmanager.pool.idle.IdleRemover] (IdleRemover) 通知池,间隔:30000

请帮忙!


WildFly 8 上的连接池实现 (ironjacamar) 采用 FIFO 即循环方式。因此,在 idle-timeout-minutes 的时间内拥有 max-pool-size 个请求数足以防止池缩小。

我必须使用另一个 decrementer policy 来告诉连接池为每个 idle-timeout-minutes 间隔显式收缩一个大小 n

示例设置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
                <pool>
                    <min-pool-size>5</min-pool-size>
                    <max-pool-size>20</max-pool-size>
                    [cc]false</prefill>
                    <use-strict-min>true</use-strict-min>
                    <capacity>
                        <decrementer class-name="org.jboss.jca.core.connectionmanager.pool.capacity.SizeDecrementer">
                            <config-property name="Size">
                                1
                            </config-property>
                        </decrementer>
                    </capacity>
                </pool>

http://www.ironjacamar.org/doc/userguide/1.1/en-US/html/ch05.html#deploying_capacity_policies