C3P0连接池大小莫名其妙地增长

时间:2016-05-16 04:21:59

标签: java spring hibernate connection-pooling c3p0

我最近注意到我的c3p0连接池的大小不断增加,达到了我有时指定的最大限制。我最初认为这可能会发生,因为应用程序代码没有将连接返回到池。此情况并非如此。为了模拟开发环境中的问题,我做了一个简单的测试:

我编写了一个API,除了非常简单的数据库查询之外什么都不做,并返回结果。以下是我正在使用的c3p0池设置:

#Pool configuration
c3p0.initialPoolSize=10
c3p0.minPoolSize=10
c3p0.maxPoolSize=100
c3p0.acquireIncrement=1
c3p0.maxIdleTime=1800
c3p0.unreturnedConnectionTimeout=20
c3p0.idleConnectionTestPeriod=600
c3p0.testConnectionOnCheckout=true

在使用并发性10命名测试API时,我希望池大小永远不会超过10.但有时会达到20-30。是什么解释了这个?

我知道我可以通过将maxIdleTimeExcessConnections设置为较低的值来减小池大小。是什么导致它在第一时间成长?

以下是我使用的版本:

c3p0: 0.9.1.2
hibernate entitymanager: 4.2.1.Final
spring-data-jpa: 1.3.4.RELEASE

1 个答案:

答案 0 :(得分:0)

尝试为连接池启用日志记录,以便确切了解它是如何请求新连接的。

请参阅下面的帖子,其中提供了各种故障排除技巧:

Running out of DB connections!