1

我的应用程序使用DBCP1.4、hibernate 和 spring,连接到 oracle。在几百个请求/秒的常见负载下,我获得了与数据库的太多 TCP 连接(导致数据库端过度使用系统进行身份验证,16 核机器的 cpu 为 95%)。超过 80 个连接/秒,每个连接为来自客户端的少量请求和 FIN 提供服务。每个会话只有 15-20 毫秒。我想调整DBCPoracle 驱动程序(不知道哪个负责)以延长每个连接的时间(至少考虑 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"/>

spring的线程执行器设置是-

     <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