【发布时间】:2014-01-29 12:03:36
【问题描述】:
嗨,我们使用的是 tomcat 6,context.xml 如下所示
<Context>
<Resource defaultAutoCommit="false" defaultReadOnly="false"
driverClassName="oracle.jdbc.driver.OracleDriver"
fairQueue="false" initialSize="${DBPool.initialPoolSize}"
jdbcInterceptors="ConnectionState;StatementFinalizer"
jmxEnabled="true" logAbandoned="false" maxActive="${DBPool.maxPoolSize}"
maxIdle="30" maxWait="30000"
minEvictableIdleTimeMillis="5000" minIdle="${DBPool.minPoolSize}"
name="jdbc/BankDBPool" password="${DBPool.bankPassword}"
removeAbandoned="true" removeAbandonedTimeout="60"
testOnBorrow="false" testOnReturn="true"
testWhileIdle="false" timeBetweenEvictionRunsMillis="5000"
type="javax.sql.DataSource"
url="${DBPool.jdbcUrl}"
factory="uk.co.xxxx.encryption.dbcp.DecryptingBasicDataSourceFactory"
useEquals="false" username="${DBPool.bankUser}" validationInterval="30000" validationQuery="select 1 from dual" />
</Context>
DBPool.maxPoolSize=400
DBPool.minPoolSize=15
DBPool.initialPoolSize=15
问题是我们必须将 maxPoolSize 设置为非常高,因为它会给出连接不可用的异常。 DB Monitor 工具显示连接空闲,但似乎无法重用。此应用程序的流量非常低。一天大约有 10000 次点击。
我们正试图找出这里可能存在的问题。
我所有的服务方法都被标记了 @Transactional(propagation = Propagation.REQUIRED, readOnly = true or false)
DecryptingBasicDataSourceFactory 只做返回数据源的工作。 我们正在使用 spring 和 hibernate。
【问题讨论】:
-
您能否发布“连接不可用异常”的堆栈跟踪?
标签: database tomcat connection memory-leaks pool