Oracle 连接收集未按预期工作

Oracle connection harvesting not working as expected

我正在使用 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 个连接,我也面临连接关闭异常。我在这里缺少任何配置吗?

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