gpt4 book ai didi

database - Tomcat 数据库连接泄漏

转载 作者:行者123 更新时间:2023-11-28 23:39:20 25 4
gpt4 key购买 nike

您好,我们使用的是 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。

最佳答案

问题已解决。显然其中一种方法缺少@Transactional。另一个变化是将 hibernate 属性中的批量大小从 100 减少到 20。但主要是添加 @Transactional 解决了这个问题。

关于database - Tomcat 数据库连接泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21430584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com