2016-05-23 299 views
1

我有一個基本的c3p0配置如下。我問的是當應用程序沒有流量時(連接保持空閒狀態),當每個連接達到maxIdleTime時,c3p0是否可以縮小池,因爲最小和最大連接數是相同的?c3p0 - maxIdleTime配置

<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"/> 

回答

1

maxIdleTimeExcessConnections約爲最大限度地降低C3P0池舉行的連接數時池不負載下。默認情況下,c3p0池在負載下增長,但只有在連接失敗時才縮小連接測試或通過上述參數過期。一些用戶希望他們的池可以在使用量激增之後快速釋放不必要的連接,這會導致大型池的大小。您可以通過將maxIdleTimeExcessConnections設置爲比maxIdleTime短得多的值來實現此目的,如果連接超出您設定的最小大小,則如果它們閒置超過一小段時間,就會被釋放。