【问题标题】:c3p0 connection pool always gets maxed outc3p0 连接池总是被最大化
【发布时间】:2017-06-19 00:55:26
【问题描述】:

我们正在维护一个已有 5 年历史的 Web 项目,最近我们遇到了登录缓慢的问题。经检查,c3p0 Connection Pools 在用户登录时被最大化。有没有办法调试/修复这个?

 Current versions: 
 -c3p0:0.9.1.2
 -hibernate:3.6.7.Final 
 -mysql connector: 5.1.23

下面是c3p0 setting

<bean id="c3p0PooledMysqlDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="jdbcUrl" value="XX"/>
    <property name="user" value="XXXX"/>
    <property name="password" value="XXXX"/>
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="acquireIncrement" value="3"/>
    <property name="idleConnectionTestPeriod" value="300"/>
    <property name="maxIdleTime" value="900"/>
    <property name="maxIdleTimeExcessConnections" value="599" />
    <property name="maxPoolSize" value="60"/>
    <property name="minPoolSize" value="5"/>
    <property name="maxStatements" value="0"/>
    <property name="testConnectionOnCheckout" value="true"/>
    <property name="preferredTestQuery" value="select 1" />
</bean>

日志片段:

第 315730 行:11:06:29,208 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-98) 获取测试 -- 池已满。 [管理:60;最大:60] 第 317353 行:11:06:41,533 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-101) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 317370 行:11:06:41,569 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-102) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 317715 行:11:06:51,561 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-103) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 317829 行:11:06:57,643 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-105) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 317900 行:11:07:01,539 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-106) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 318002 行:11:07:05,510 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-107) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 318070 行:11:07:09,336 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-108) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 318118 行:11:07:13,857 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-109) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 318166 行:11:07:19,692 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-89) 获取测试 -- 池已满。 [管理:60;最大:60] 第 318239 行:11:07:28,669 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-38) 获取测试 -- 池已满。 [管理:60;最大:60] 第 318786 行:11:08:08,560 调试 [com.mchange.v2.resourcepool.BasicResourcePool] (ajp--172.21.66.54-8009-110) 获取测试 -- 池已满 出去。 [管理:60;最大:60] 第 3 行

任何帮助将不胜感激。我们已经调试了一个多星期了。

【问题讨论】:

标签: mysql hibernate c3p0


【解决方案1】:

检查您是否有连接泄漏。参见例如c3p0 deadlocks in Hibernate 或 c3p0 的文档 directly

哦,升级到 c3p0 0.9.5.2。 c3p0 0.9.1.x 非常非常老了。

【讨论】:

  • 感谢您的建议。我们实际上是在实现 unreturnedConnectionTimeout 和 debugUnreturnedConnectionStackTraces。待我们将其移至生产环境后再看看。
猜你喜欢
  • 2013-05-31
  • 2016-07-08
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2017-06-21
  • 2013-02-03
  • 2012-09-07
  • 2012-01-15
相关资源
最近更新 更多