论坛首页 Java企业应用论坛

DBCP,C3P0,Proxool,BoneCP性能比较

浏览 43376 次
精华帖 (1) :: 良好帖 (5) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-23  
性能不是核心问题

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

0 请登录后投票
   发表时间:2010-10-23  
单单一个简单的不规则的查询 不能叫做性能测试
0 请登录后投票
   发表时间:2010-10-23  
BoneCP对于事务上面处理的怎么样?
0 请登录后投票
   发表时间:2010-10-23  
相比较来看 c3p0 还是很不错的

我们也正在计划从dbcp切换到c3p0

BoneCP 没用过 不知道
0 请登录后投票
   发表时间:2010-10-24  
c3p0,我们一直在用它
0 请登录后投票
   发表时间:2010-10-24  
建议模拟一下mysql在20--50连接池大小小,2w记录的插入效率。
这个比较接近真实使用环境
0 请登录后投票
   发表时间:2010-10-24  
srdrm 写道
性能不是核心问题

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



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

我想提一个问题就是,对于dbcp,c3p0等连接池来说,如果使用其自带的自动重连机制,势必导致每个数据库访问都要加上一次查询,这种机制对性能的影响也未免太大了吧?!肯定有更简单有效的实现方式,为何不提供呢?比如有一个守护线程,主动定期检查,或者被动收到到连接断开的异常信息后,便开始以一定的时间间隔自动重连数据库,这样对性能的开销影响最小。难道这种机制还需要自己实现?我知道 spy memcached 的自动重连机制就是这样的,但是为何这些数据库连接池的自动重连机制这么烂呢?求高手解惑!
0 请登录后投票
   发表时间:2010-10-24  
快不是主要的,关键是稳定,高并发时,会不会崩,这才是应该所关心的
0 请登录后投票
   发表时间:2010-10-25  
smilerain 写道
http://code.google.com/p/jspxnet/downloads/list

包  jspx.net-3.6.jar
也有个连接池,麻烦也一起测试一下。

   JspxDataSource dataSource = new JspxDataSource();  
   dataSource.setDriverClass("驱动");  
   dataSource.setJdbcUrl("jdbc连接");  
   dataSource.setUser("用户名");  
   dataSource.setMaxPoolSize(10); //最大连接数  
   dataSource.setMaxConnectionTime(180000); //3 minute 分钟,单位为毫秒  
      
   Connection connection = dataSource.getConnection();  
   connection.createStatement();  
  
   connection.close();  

 
  <bean id="jspxDataSource" class="com.jspx.datasource.JspxDataSource" destroy="close" singleton="true">  
          <string name="driverClass">${driverClassName}</string>  
           <string name="jdbcUrl">${jdbcUrl}</string>  
          <string name="user">${username}</string>  
          <string name="password">${password}</string>  
          <int name="maxPoolSize">${maxPoolSize}</int>  
   </bean>  



模拟5个线程循环10次并发访问数据库:594ms
模拟10个线程循环10次并发访问数据库:594ms
模拟20个线程循环10次并发访问数据库:625ms
模拟30个线程循环10次并发访问数据库:672ms
模拟50个线程循环10次并发访问数据库:875ms
模拟100个线程循环10次并发访问数据库:1078ms
模拟200个线程循环10次并发访问数据库:1266ms
模拟500个线程循环10次并发访问数据库:2001ms
模拟800个线程循环10次并发访问数据库:2844ms
模拟1000个线程循环10次并发访问数据库:3220ms
模拟3000个线程循环10次并发访问数据库:9532ms
模拟5000个线程循环10次并发访问数据库:15987ms
0 请登录后投票
   发表时间:2010-10-25  
psuqqvfp 写道
快不是主要的,关键是稳定,高并发时,会不会崩,这才是应该所关心的

JAVA虚拟机最多也就能模拟5000-7000个线程了,所以测试的时候最多才到5000
0 请登录后投票
论坛首页 Java企业应用版

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