我有一个基本的c3p0配置如下。我要问的是当应用程序上没有流量时(连接保持空闲状态),当每个连接达到maxIdleTime时c3p0是否会收缩池,因为最小和最大连接数是相同的?
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="#[jdbc.url]"/>
<property name="user" value="#[jdbc.username]"/>
<property name="password" ref="DbPassword"/>
<property name="minPoolSize" value=25/>
<property name="maxPoolSize" value=25/>
<property name="acquireIncrement" value= 1/>
<property name="idleConnectionTestPeriod" value="100"/>
<property name="maxIdleTime" value="120"/>
<property name="preferredTestQuery" value ="select 1 from dual"/>
答案 0 :(得分:1)
maxIdleTimeExcessConnections
是关于在池未加载时最小化c3p0池所持有的连接数。默认情况下,c3p0池在负载下增长,但只有在Connections通过Connection测试失败或通过上述参数过期时才会收缩。一些用户希望他们的池在强制使用大量池大小的使用高峰后快速释放不必要的连接。您可以通过将maxIdleTimeExcessConnections
设置为比maxIdleTime
短得多的值来实现此目的,如果超出您设置的最小尺寸,则会释放超出短时间内闲置的连接。