0

我正在使用 UCP jar 11.2.0.3.0 作为 oracle 的数据库连接池。以下是一些数据库连接配置

<property name="datasource.connections.connectionHarvestTriggerCount">100</property>
<property name="datasource.connections.connectionHarvestMaxCount">50</property>
<property name="datasource.connections.min_size">5</property>
<property name="datasource.connections.max_size">500</property>
<property name="datasource.connections.idle_test_period">100</property>
<property name="datasource.connections.testConnectionOnCheckout">true</property>
<property name="datasource.connections.checkoutTimeout">60000</property>
<property name="datasource.connections.timeout">300</property>
<property name="datasource.connections.preferredTestQuery">SELECT 1 from dual</property>
<property name="datasource.max_statements">200</property>
<property name="datasource.connections.wait.timeout">3</property>

我期望使用的连接数达到 400 收获应该开始并关闭 50 个连接,然后将它们放回池中。但即使只使用了 30-40 个连接,我也面临连接关闭异常。我在这里缺少任何配置吗?

4

1 回答 1

0

Harvesting 从不考虑应用程序中配置的连接池。它只是检查从应用程序打开的所有连接并计算最大计数和收获触发计数,最后关闭连接。例如,您可能配置了 100 个连接池,但应用程序不会一次启动所有 100 个连接。所以应用程序可能有 40 个连接。我们的最大计数为 10,收获触发器计数为 10,正如您所期望的,当应用程序充满 90 个连接时,收获 10 个并保留 80 个以保存您的应用程序。但是,仅当您的应用程序激活 40 个连接时,Harvesting 才会开始关闭使用量达到 30 个的连接。

于 2017-05-22T11:31:45.993 回答