精华帖 (3) :: 良好帖 (13) :: 新手帖 (0) :: 隐藏帖 (9)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-02
最后修改:2010-08-02
unika_ly12 写道 引用 1 dbcp
dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。 这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml 使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性 有所下降,此外不提供连接池监控 请问dbcp的版本是?大并发量是指多大? 针对dbcp,我在oracle 10上做了下测试: 环境配置: 最大连接数设置为10 初始连接数位2 持久层框架 bboss-persistent,连接池common-dbcp 1.3 测试场景: 300个线程并发往一张3字段的表中插入数据,每个线程执行3条记录插入操作 测试结果: 插入完毕后,统计结果如下 不使用事务 :357条/秒 使用RW_TRANSACTION事务:820条/秒 测试程序: package com.frameworkset.common.poolman; import javax.transaction.RollbackException; import com.frameworkset.orm.transaction.TransactionManager; /** * * <p>Title: CurrentTest.java</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2007</p> * @Date 2009-7-2 下午12:02:44 * @author biaoping.yin * @version 1.0 */ public class CurrentTest { public static void main(String[] args) throws InterruptedException { // for(int j = 0; j < 300; j ++) // { // CurrentTest i = new CurrentTest(); // i.test(false); // } for(int j = 0; j < 300; j ++) { CurrentTest i = new CurrentTest(); i.test(true); } } public void test(boolean usetx) { if(!usetx) { Task t = new Task(); t.start(); } else { TXTask t = new TXTask(); t.start(); } } static class Task extends Thread { /* (non-Javadoc) * @see java.lang.Thread#run() */ @Override public void run() { DBUtil db = new DBUtil(); try { db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); } catch (Exception e) { e.printStackTrace(); } } } static class TXTask extends Thread { /* (non-Javadoc) * @see java.lang.Thread#run() */ @Override public void run() { DBUtil db = new DBUtil(); TransactionManager tm = new TransactionManager(); try { tm.begin(tm.RW_TRANSACTION); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); db.executeInsert("insert into TEST_CURRENT(id,name) values(10,'test')"); tm.commit(); } catch (Exception e) { try { tm.rollback(); } catch (RollbackException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } e.printStackTrace(); } } } } 测试用例可在附件中下载,bbossgroups最新版本的下载地址: http://sourceforge.net/projects/bboss/files/bbossgroups-2.0-RC/bbossgroups-2.0-RC.zip/download 注意同时要打两个补丁,补丁地址: http://sourceforge.net/projects/bboss/files/bbossgroups-2.0-RC/bboss%20rpc%20classcast%20and%20timeout%20exception%20patch.zip/download http://sourceforge.net/projects/bboss/files/bbossgroups-2.0-RC/cglib%20stackoverflow-patch.zip/download |
|
返回顶楼 | |
发表时间:2010-08-02
jdbc2 中,明确的提出连接池,而且要求各个数据库厂商实现,为什么不用驱动程序自带的连接池?
有比这个更好的吗? 你说的那个什么websphere , weblogic 的连接池, 其实都是数据库厂商提供的。 只是做个界面方便你配置而已。 |
|
返回顶楼 | |
发表时间:2010-08-03
楼主:
请问使用的是什么数据库比较出结论?
c3P0 速度确实比Proxool 快, 项目用下来,我认为C3P0稳定性 不如Proxool ; c3p0 有时候connection并没有被关闭,会出现DEADLOCK 问题
|
|
返回顶楼 | |
发表时间:2010-08-03
使用连接池确实比较方便, 针对mysql还可以防止掉线 ..
|
|
返回顶楼 | |
发表时间:2010-08-06
针对大家提出的问题,我谈一下自己的看法
问题一 比较的这些连接池的依据,为什么我的应用使用情况和你说的不一样? 其实连接池是否稳定首先和应用代码有直接关联,代码有问题再好的连接池也不灵。抛开代码问题,那么我的判断都是基于已有的数个项目的使用情况而做出,肯定算不上权威数据,只是个人经验,但相信也是有一定价值的。这些项目基本上属于中小型项目,用户量1万左右,并发数大概在几百,数据量从100万到1亿不等。 问题二 比较的连接池基于什么环境 在笔者对连接池进行比较所参考的几个项目中,涵盖了大部分的数据库环境,主要包括aix和linux下的oracle、db2环境,windows下的sqlserver环境,以及linux下的mysql、informix环境 问题三 连接池这个东西只是厂商提供方便配置而已 当然是厂商自己针对jdbc驱动包进行进一步包装形成的,但就是这个包装,关系到了我们应用的稳定性以及可控性。毕竟复杂一些的应用里基本上都要使用到连接池,因此连接池的性能我们也是很关心的。另外连接池的监控能够帮助我们排除很多程序上的性能bug,这一点也是很有用的。 广告时间: 轻松阅读、快乐享受,尽在“阅读地带”www.article-reading.com |
|
返回顶楼 | |
发表时间:2010-08-06
这确实是C3P0里常见的issue.解决方案是配置一个参数 unreturnedConnectionTimeout,单位是秒。
虽然丑陋了些,但是好歹能解决问题。
waterborn 写道
楼主:
请问使用的是什么数据库比较出结论?
c3P0 速度确实比Proxool 快, 项目用下来,我认为C3P0稳定性 不如Proxool ; c3p0 有时候connection并没有被关闭,会出现DEADLOCK 问题
|
|
返回顶楼 | |
发表时间:2010-08-06
公司一直用的proxool
|
|
返回顶楼 | |
发表时间:2010-08-06
unika_ly12 写道
引用
1 dbcp
dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。 这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml 使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性 有所下降,此外不提供连接池监控 请问dbcp的版本是?大并发量是指多大?
关注学习~~~~ |
|
返回顶楼 | |
发表时间:2010-11-12
这些连接池都有用过,不过有个问题很奇怪就是在本地测试时没有问题,不过将网站发布上网上空间就不行,似乎现在网上的的服务器都不支持连接池的功能哦~~~
|
|
返回顶楼 | |