我正在使用带弹簧的c3p0连接池(使用普通的jdbc,没有休眠)。这是我的配置
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="acquireIncrement" value="3"/> <property name="minPoolSize" value="3"/> <property name="maxPoolSize" value="25"/> <property name="maxStatementsPerConnection" value="0"/> <property name="numHelperThreads" value="6"/> <property name="testConnectionOnCheckout" value="false" /> <property name="testConnectionOnCheckin" value="false" /> <property name="idleConnectionTestPeriod" value="10"/> <property name="preferredTestQuery" value="select curdate()"/> <property name="maxIdleTime" value="5" /> <property name="unreturnedConnectionTimeout" value="5" /> <property name="debugUnreturnedConnectionStackTraces" value="true" /> </bean>
我确实看到连接池达到25个连接的最大值,但是当负载减少时,缩小后不会收缩。
我在这里错过了一些配置???
答案 0 :(得分:0)
请参阅配置参数maxIdleTime和maxIdleTimeExcessConnections。
如果您想在负载变亮时积极缩减池大小,请设置一个简短的maxIdleTimeExcessConnections
。保持简单maxIdleTime
相当长,所以一旦你的游泳池命中minPoolSize
,你就不会毫无疑问地通过连接流失。
如果你不在乎这么多,那么只需设置maxIdleTime
,最终池会随着空闲连接到期而缩小。但是对于maxIdleTime
的合理值,这将会缓慢发生。
如果既未设置maxIdleTime
也不maxIdleTimeExcessConnections
(也不是maxConnectionAge),则这些值都默认为零,这意味着Connections永不过期,并且池只会在Connections中断并失败时缩小测试