我的应用程序使用DBCP1.4、hibernate 和 spring,连接到 oracle。在几百个请求/秒的常见负载下,我获得了与数据库的太多 TCP 连接(导致数据库端过度使用系统进行身份验证,16 核机器的 cpu 为 95%)。超过 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"/>
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>