【发布时间】:2013-01-14 01:24:22
【问题描述】:
我正在使用 Hibernate 3.4.0 GA 和 c3p0 0.9.0.4
maxPoolSize 属性设置为 2000,但创建的最大 JDBC 连接数约为 100、110(即使程序需要更多连接)。
这是我的配置:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxPoolSize" value="2000"/>
<property name="initialPoolSize" value="50"/>
<property name="minPoolSize" value="50"/>
<property name="acquireIncrement" value="3"/>
<property name="maxIdleTime" value="60"/>
</bean>
知道为什么吗?
【问题讨论】:
-
你怎么知道它需要更多的连接?您是否进行了线程转储并验证您有 110 个线程都挂在数据库操作上?就此而言,您的线程池是什么样的。此外,在数据库连接方面,2000 相当多。你确定你有一个可以服务这么多并发查询的数据库实例吗?
-
我看到线程等待执行对数据库的查询。我在 JavaMelody 监控中看到有 100 个活动连接到数据库。在 mysql 配置文件中,最大连接数设置为 2750
-
我非常支持数据库上的2000个连接,如果您成功提供它们,将不会产生您想要的效果。您应该看到数据库中有什么问题,因此它同时需要如此多的连接。可能两个 SO 都没有这么大的连接池 :)
标签: java mysql hibernate jdbc c3p0