gpt4 book ai didi

java - 在最大等待时间后,c3p0 非 Activity 连接不会从连接池中剔除

转载 作者:行者123 更新时间:2023-12-02 02:35:49 25 4
gpt4 key购买 nike

我有一个使用 Spring 3.0.3、Hibernate 3.6.0 和 Oracle DB 的现有应用程序。

我已经设置并运行 c3p0,但我注意到一些奇怪的事情,但我无法真正弄清楚。

这是我的 Spring 设置

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${xxgglom.driver}" />
<property name="jdbcUrl" value="${url}" />
<property name="user" value="${username}" />
<property name="password" value="${password}" />
<property name="minPoolSize" value='5' />
<property name="maxPoolSize" value="40" />
<property name="maxIdleTime" value="240" />
<property name="maxIdleTimeExcessConnections" value="180" />
<property name="maxStatements" value="50" />
<property name="testConnectionOnCheckin" value="true" />
<property name="testConnectionOnCheckout" value="false" />
<property name="idleConnectionTestPeriod" value="300" />

我检查数据库 v$session,发现它在池中创建了 5 个连接。我将开始使用该应用程序,它会在需要时增加池大小。所以我可以通过检查日志判断 C3P0 正在工作。我遇到的一个问题是。有这些不活动的连接,它们超过了 maxIdleTime。

我检查了他们的存活时间,他们已经超过了 240 秒。我再次检查数据库,它们都显示为非 Activity 状态,但是当我查看日志时告诉我这一点。

trace com.mchange.v2.resourcepool.BasicResourcePool@282fafdd [managed: 5, unused: 4, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@5f9f7637)

我不确定到底发生了什么,但过了一会儿这些空闲连接开始堆积,而且它们似乎没有从连接池中剔除。有什么建议吗?

最佳答案

maxIdleTime 不保证连接会在任何特定时间被剔除。只要在您的配置下每个连接至少每 4 分钟使用一次,它们就不会被剔除。如果您想无条件限制连接的生存时间(我不知道为什么),您可以使用 maxConnectionAge

关于java - 在最大等待时间后,c3p0 非 Activity 连接不会从连接池中剔除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46354449/

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