论坛首页 Java企业应用论坛

DBCP,C3P0,Proxool,BoneCP性能比较

浏览 43373 次
精华帖 (1) :: 良好帖 (5) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-25  
sw1982 写道
建议模拟一下mysql在20--50连接池大小小,2w记录的插入效率。
这个比较接近真实使用环境

呵呵,我已经把mysql的最大连接数设到了500了貌似,因为我的数据库连接池最大值有200,我担心如果连接数低于连接池最大值会引发错误,如果某个线程去取连接时,数据库连接池中的连接未达到最大值必然还会创建连接,而此时mysql的连接数已达到最大值必然会拒绝连接,此时可能会出错

后者,2w记录的插入,我测试的时候已经达到了5w数据的查询,虽然一个是查询,一个是插入,但这次研究的只是数据库连接池的性能,这些数据库操作要么都快要么都慢,只是将基数变大了
0 请登录后投票
   发表时间:2010-10-25  
kenshinlk 写道
请教一下楼主,对于Bonecp:
1.有没有类似proxool的监测后台,即用org.logicalcobwebs.proxool.admin.servlet.AdminServlet配置的监测后台

2.自动重连机制如何,即应用服务器和数据库服务器曾经短暂性断开过,proxool能够比较好的自动重连,bonecp应该如何配置呢(曾经尝试过,但貌似会抛错)?


确实会跑错,但是自动重连还是生效的
0 请登录后投票
   发表时间:2010-10-25  
很不错  学习了   我之前用的都是c3p0   改天也测测BoneCP
0 请登录后投票
   发表时间:2010-10-25  
可以看看 :http://www.iteye.com/topic/725879
0 请登录后投票
   发表时间:2010-10-25  
LZ的简单的测试并不能真实反映出效率问题.
0 请登录后投票
   发表时间:2010-10-25  
换个服务器环境,换个数据库试试
0 请登录后投票
   发表时间:2010-10-26  
rustlingwind 写道
srdrm 写道
性能不是核心问题

能够断线重连,失败恢复的连接池才更可靠



我也很关心自动重连的问题。尤其是生产环境下,启动n个应用服务器节点的情况,重启数据库后还要重启n个应用服务器节点简直太麻烦,而且,对于实时性要求较高的网站来说,也是不允许的。
而对于性能来说,这几种常见连接池的性能个人感觉不会差距太大,而且如果网站的性能有问题,一般性能瓶颈也绝不会是在数据库连接池上。

我想提一个问题就是,对于dbcp,c3p0等连接池来说,如果使用其自带的自动重连机制,势必导致每个数据库访问都要加上一次查询,这种机制对性能的影响也未免太大了吧?!肯定有更简单有效的实现方式,为何不提供呢?比如有一个守护线程,主动定期检查,或者被动收到到连接断开的异常信息后,便开始以一定的时间间隔自动重连数据库,这样对性能的开销影响最小。难道这种机制还需要自己实现?我知道 spy memcached 的自动重连机制就是这样的,但是为何这些数据库连接池的自动重连机制这么烂呢?求高手解惑!

其他连接池用得不多,c3p0 好好看看配置参数,重连机制是有的,小心地配置那些参数,会让你的应用更稳定,数据库重启自动重连不是问题
0 请登录后投票
   发表时间:2010-10-26  
c3p0重连是没有问题的。用DBCP的时候重连碰到过失败的时候。
0 请登录后投票
   发表时间:2010-10-29  
xieshaohu 写道
c3p0重连是没有问题的。用DBCP的时候重连碰到过失败的时候。


http://jolbox.com/bonecp/downloads/site/apidocs/com/jolbox/bonecp/BoneCPConfig.html#setTransactionRecoveryEnabled(boolean)
http://aruld.info/handling-flux-database-outages-using-bonecp-connection-pool/

Wallace
0 请登录后投票
   发表时间:2010-10-29  
kenshinlk 写道
请教一下楼主,对于Bonecp:
1.有没有类似proxool的监测后台,即用org.logicalcobwebs.proxool.admin.servlet.AdminServlet配置的监测后台


JMX @ v0.7.1-SNAPSHOT:

BoneCPConfig.java:

/**
* If set to true, keep track of some more statistics for exposure via JMX. Will slow down the pool
* operation.
* @param statisticsEnabled set to true to enable
*/
public void setStatisticsEnabled(boolean statisticsEnabled) {
this.statisticsEnabled = statisticsEnabled;
}



---


/** Set to true to disable JMX.
* @param disableJMX the disableJMX to set
*/
public void setDisableJMX(boolean disableJMX) {
this.disableJMX = disableJMX;
}



Wallace
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics