1

私のアプリケーションは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>
4

0 に答える 0