1
我正在使用c3p0連接池與Spring(純jdbc,沒有休眠)。這裏是我的池配置c3p0池不縮水
<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>
我正在使用JMX監視我的連接池。我發現我的游泳池在負載下增長到25,但從不收縮。我在這裏錯過了一些cofig嗎?
按http://www.mchange.com/projects/c3p0/index.html#managing_pool_size 「maxIdleTime定義了連接應在多少秒被允許從池中被淘汰之前不被使用。」 我認爲這是用來從池中刪除空閒連接。 – Pushkar
@Pushkar,當我開始使用c3p0時,我對maxIdleTime參數做了相同的假設。我經歷了監控池大小w/JMX的同樣練習,並沒有看到池縮小。我瞭解到它是maxIdleTime和maxIdleTimeExcessConnections的組合。如果沒有maxIdleTimeExcessConnections,連接可能會被閒置,但它們會立即被新連接取代以保持池大小不變。 –