2016-05-23 11 views
1

Ich habe eine grundlegende c3p0 Konfiguration wie folgt. Was ich frage ist, wenn es keinen Verkehr auf der Anwendung gibt (Verbindungen bleiben im Leerlauf), könnte c3p0 den Pool verkleinern, wenn MaxIdleTime für jede Verbindung erreicht wird, da min und max Verbindungsnummern gleich sind?c3p0 - maxIdleTime Konfiguration

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

Antwort

1

maxIdleTimeExcessConnections ist über die Anzahl der Verbindungen von c3p0 Pools gehalten zu minimieren, wenn der Pool nicht unter Last ist. Standardmäßig wachsen c3p0-Pools unter Last, aber schrumpfen nur, wenn Verbindungen einen Verbindungstest nicht bestehen oder über die oben beschriebenen Parameter abgelaufen sind. Einige Benutzer möchten, dass ihre Pools nach einer Nutzungsspitze, die eine große Poolgröße erzwingt, schnell unnötige Verbindungen freigeben. Sie können dies erreichen, indem Sie maxIdleTimeExcessConnections auf einen Wert setzen, der viel kürzer als maxIdleTime ist und Verbindungen erzwingt, die über Ihre festgelegte Mindestgröße hinausgehen, wenn sie länger als eine kurze Zeit inaktiv sind.