我最近注意到我的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
答案 0 :(得分:0)