私のアプリケーションはDBCP1.4、休止状態、および春を使用し、Oracle に接続します。数百の要求/秒の一般的な負荷の下で、DB への TCP 接続が多すぎます (認証のために DB 側でシステムが過剰に使用され、16 コアのマシンで 95% の CPU が使用されます)。1 秒あたり 80 接続を超える接続では、クライアント側からのリクエストと FIN はほとんど処理されません。各セッションはわずか 15 ~ 20 ミリ秒です。DBCPまたはOracle ドライバーを調整して(どちらがこれを担当しているのかわかりません)、各接続をより長い時間 (少なくとも 5 ~ 10 秒と考えて) 維持したいのですが、どうすればこれを取得できますか? DBCPのプール設定は
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="initialSize" value="10"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="100"/>
<property name="maxWait" value="5000"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="logAbandoned" value="false"/>
<property name="validationQuery" value="select 1 from dual"/>
<property name="testOnBorrow" value="true"/>
<property name="testWhileIdle" value="true"/>
<property name="numTestsPerEvictionRun" value="2"/>
<property name="timeBetweenEvictionRunsMillis" value="-1"/>
<property name="minEvictableIdleTimeMillis" value="600000"/>
<property name="validationQueryTimeout" value="5"/>
<property name="poolPreparedStatements" value="false"/>
春のスレッド実行者の設定は -
<property name="connectionGetterExecutor">
<bean class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="15"/>
<property name="maxPoolSize" value="100"/>
<property name="queueCapacity" value="10000"/>
</bean>
</property>