DB2データベースとJDK1.5用の組み込みデータソース(Apache Commons DBCP 1.3)、JDBC3 db2jcc.jarを使用しているSpring-Batchで作業しています。私はDBCP2.xがすでにリリースされていることを知っていますが、既存のシステム(JDK 1.5)のために私は今アップグレードできません。DBCP 1.3検証クエリのパフォーマンス低下
DB構成:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="****"/>
<property name="username" value="***"/>
<property name="password" value="****"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="10"/>
<property name="maxIdle" value="10"/>
<property name="maxWait" value="10000"/>
<property name="minEvictableIdleTimeMillis" value="30000"/>
<property name="timeBetweenEvictionRunsMillis" value="5000"/>
<property name="validationQuery" value="select 1 from sysibm.sysdummy1"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
<property name="testWhileIdle" value="true"/>
</bean>
私はトゥーレにtestOnBorrow、testOnReturnとtestWhileIdleとともにvalidationQueryプロパティを使用している場合は、プロセスが完了するまでに3倍の時間を取って気づきました。
これを解析しているうちに、tomcat JDBC接続プールに "validationInterval"というプロパティがあります。
私の質問:
1)それは、接続のすべての時間を検証しないように、私はDBCP1.3にvalidationIntervalを設定することができますどのような方法がありますが、指定された期間
2後)validationQueryを使用しないと、私が直面する可能性のある問題はありますか?
3)DBCP1.3がどのように接続を検証するかについてvalidationQueryが指定していない場合は、
[EDIT]:以前の設定で
ラン1:ここでは
には、次のニティンの提案後の試験結果で撮影した 合計時間 - 74秒]
実行コンフィギュレーション: testOnBorrow = true、testOnReturn = false、testWhileIdle = false
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="****"/>
<property name="username" value="***"/>
<property name="password" value="****"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="10"/>
<property name="maxIdle" value="10"/>
<property name="maxWait" value="10000"/>
<property name="minEvictableIdleTimeMillis" value="1800000"/>
<property name="timeBetweenEvictionRunsMillis" value="1800000"/>
<property name="validationQuery" value="select 1 from sysibm.sysdummy1"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="false"/>
<property name="testWhileIdle" value="false"/>
</bean>
しかし号試してみてください "timeBetweenEvictionRunsMillis" ではない多くの処理時間の変化が、私は30分
おかげニティンにvalidationQueryせずに検証することはできません
は、最初のオプションは、パフォーマンスに30%を向上させるために私を助けに立ち退かせるために5秒ごとに実行されます。私は自分の質問を編集し、テスト結果を追加しました。私のデータソース設定をチェックして、必要な変更があれば教えてください。 –
試してみることもできます:削除:maxIdle = 10追加:minIdle = 1また、「ビジー」システムの場合、timeBetweenEvictionRunsMillisの時間が長く、約60000分でOKです。 – Nitin
Nitinありがとうございました。罰金をあげるあなたの助けを感謝します。 –