Hibernate3.2+Mysql+Tomcat的中型企业应用用选择哪个连接池最稳定?

悬赏:20 发布时间:2008-06-25 提问人:lgcpeter (初级程序员)

目前正开发某企业内部的办公系统,日常同时在线人数500左右。
开源连接池可选的很多:
A,Tomcat自带的DBCP
B,Hibernate支持的单独DBCP
C,C3P0
D,proxool
E,其它

希望大家能能给出一个最优的选择,十分感谢!
问题补充:
听取了大家的建议,于前天(2008-06-28)替换掉了以前tomcat自带的DBCP连接池,改为了C3P0,配置如

下:
<property name="c3p0.min_size">10</property><!--连接池的最小连接数-->
	<property name="c3p0.max_size">50</property><!--最大连接数-->
	<property name="c3p0.timeout">100</property><!--连接超时时间-->
	<!--每隔100秒检测连接是否可正常使用 -->
	<property name="c3p0.idle_test_period">100</property>
	<!--当池中的连接耗尽的时候,一次性增加的连接数量,默认为3-->
	<property name="hibernate.c3p0.acquire_increment">3</property>
	<!--statemnets缓存大小-->
	<property name="c3p0.max_statements">150</property>

原来的DBCP配置
<Resource 
maxActive="200"
maxIdle="60"
maxWait="-1"
/>

今天(2008-06-30)访问量达到了200,并且某一瞬间并发查询达到了150左右。出现用DBCP时未出现过的

问题:瞬间打开页面很慢,并有部分用户超时掉线,我估计是我C3P0设置的问题。并提高悬赏5分,请大家

给予回答!

采纳的答案

2008-06-25 wangxin0072000 (高级程序员)

C3P0 的更新比较及时,使用很普遍,但是听说proxool的性能更好,因为他对后台资源控制比较好,在connection close时,也就是归还connection,
关闭所有的statement,并且判断是否autocommit,如果不行,就rollback,并且设置true。
C3P0的一个比较特别的设计是它默认会启动三个异步线程用来在来不及调度的情况下使用,所以在任何情况下都不会失去响应。
个人建议:C3P0,因为社区使用的人比较多,出了问题也好问。

提问者对于答案的评价:
大家都选C3P0,我也试试!!

其他回答

我用的是c3p0,仅供参考,dbcp据说bug多hibernate抛弃它了。
这玩意也不知道咋判断,Hibernate官方推荐,准没错。
jasongreen (高级程序员) 2008-06-25
C3P0
dmewy (初级程序员) 2008-06-25
我用的都是C3PO 推荐使用
DBCP的连接断掉后不会重新连接~~C3PO会自动连接~~`
wenhanqiang (初级程序员) 2008-06-25
C3PO,是大点.
zhangdongliang (初级程序员) 2008-06-25
在网络不稳定的情况下,最好使用C3PO
feigme (初级程序员) 2008-06-25
我用的也是C3P0,既然HIBERNATE这样强,没有太多的担心。
Acaleph (初级程序员) 2008-06-25
推荐c3p0 or dbcp,
proxool 有web监控界面,但用proxool的webapp部署到linux平台下,有时会发生init很慢的情况,基本用的是proxool的默认配置,原因未知。
winterlion (初级程序员) 2008-06-26