Oracle 11gデータベースにアクセスするためにSpring JdbcTemplateとの接続プーリングにc3p0 ComboPooledDataSourceを使用しました。 (ネットワークが短時間停止したように見える)しばらくすると、プールから接続を取得するすべての要求にタイムアウト例外が発生します。これは、Weblogicサーバーが再起動されるまで(データベースサーバーを再起動する必要はありません)解決されません。サーバの再起動までC3P0接続が復旧しない
Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from [email protected] -- timeout at awaitAvailable()
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1317)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
Iはデータベース現在のセッションともC3P0ログをチェックしているとは接続リークが(1550のみ50の接続が使用されている)が存在しません。 また、ネットワークの停止後、c3p0によって新しい接続が取得されないことにも留意しました(acquire_incrementは増加しますが、管理接続は50から10に下がり続けます)。
当社のデータソース設定:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="properties" >
<props>
<prop key="oracle.net.CONNECT_TIMEOUT">20000</prop>
<prop key="oracle.jdbc.ReadTimeout">70000</prop>
</props>
</property>
<!-- Connection properties -->
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@//host:port/db_name"/>
<property name="user" value="*****"/>
<property name="password" value="*****"/>
<!-- Pool properties -->
<property name="testConnectionOnCheckout" value="true"/>
<property name="checkoutTimeout" value="30000" />
<property name="debugUnreturnedConnectionStackTraces" value="true" /> <!-- Turn this on only for debugging -->
<property name="preferredTestQuery" value="select 1 from dual"/>
<property name="initialPoolSize" value="3" />
<property name="maxAdministrativeTaskTime" value="30" />
<property name="maxIdleTime" value="600" />
<property name="maxPoolSize" value="1550" />
<property name="maxStatements" value="0" /> <!-- Disable statement pooling -->
<property name="maxStatementsPerConnection" value="0" /> <!-- Disable statement pooling -->
<property name="minPoolSize" value="5" />
<property name="numHelperThreads" value="15" />
<property name="unreturnedConnectionTimeout" value="600" /> <!-- Should set this for debugging leaks -->
</bean>
私は本当に何が起こっているのか見当がつかない。
更新 申し訳ありませんが、編集した設定(テストは私の実際の設定ファイルに私の質問に間違っていたではなく)
(ちょっと更新しました) –
申し訳ありませんがTestConnectionOnCheckout、それは私の質問で間違いでした。質問が更新されました。 –