我正在使用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 的连接。