DBCP,C3P0,Tomcat_JDBC 等连接池的性能及稳定性测试 druid待补充

1.测试环境:

 

硬件环境:

数据库服务器:2U*8核 8G内存 
测试服务器:   2U*8核 6G内存

 

 

软件环境:

jdk:   

1.6.29

mysql:

5.0.77

mysql_driver:

mysql-connector-java-5.0.8-bin.jar

 

DBCP:

commons-dbcp-1.4.jar

下载地址: http://commons.apache.org/dbcp/

commons-pool-1.5.6.jar

下载地址: http://commons.apache.org/pool/

C3P0:

c3p0-0.9.1.2.jar

下载地址: http://www.mchange.com/projects/c3p0/index.html

log4j-1.2.8.jar(c3p0需要添加此包)

下载地址: http://logging.apache.org/log4j/

 Tomcat_JDBC:

        tomcat-jdbc.jar

下载地址: https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

或者在tomcat安装根目录下的lib目录中直接拿来用之

tomcat-juli.jar

下载地址:(没找到)

在tomcat安装根目录下的bin目录中直接拿来用之

 

配置信息:

数据库连接超时时间设置为:   10年

数据库支持最大连接数设置为:2000

 

初始化连接池大小:10

连接至最小活动线程数:10

连接池最大活动线程数:100

 

其他配置均保持各个连接池的默认配置

 

2.性能测试:   (测试代码见附件)

测试点:

在多线程多任务的条件下,各个连接池获取连接然后马上关闭连接,比较所消耗的时间。

 

在 上看了好多关于数据库连接池方面的测试,

大多数测试过程中,包括了执行sql语句部分,即,创建连接,执行sql语句,关闭连接,

一开始我也是这样测试,

测试过过程中,发现数据很不稳定, 这几个连接池都是忽快忽慢,

经过思考、分析,个人 觉得这样是不准确的,执行sql语句时,测试已经不是数据库连接池的性能了,

完全是数据库驱动程序(例如mysql_driver )和数据库本身的性能,

 

数据库连接池负责的仅仅是建立DataSource,获取(从连接池中获取)Connection,关闭(放回到连接池)Connection,

 

因此,

我在测试时,没有计算初始化连接池(建立DataSource)的时间,而是连接池“获取连接然后马上关闭连接”的时间。

 

测试结果:

 平均消耗时间是每个用例测试了5次计算出来的

 

DB POOL  线程数量  单线程
执行次数 
平均消耗
时间
(ms)
平均单条
时间
(ms) 
DBCP 10 1000 251 0.0251
C3P0 10 1000 802.8 0.08028
TomcatJDBC 10 1000 191.8 0.01918

 

 

DB POOL  线程数量  单线程
执行次数 
平均消耗
时间
(ms)
平均单条
时间
(ms) 
DBCP 100 1000 810.4 0.008104
C3P0 100 1000 2248.8 0.022488
TomcatJDBC 100 1000 726 0.00726

 

 

DB POOL  线程数量  单线程
执行次数 
平均消耗
时间
(ms)
平均单条
时间
(ms) 
DBCP 150 1000 1854.4 0.012363
C3P0 150 1000 2990.8 0.019939
TomcatJDBC 150 1000 861 0.00574

 

 

DB POOL  线程数量  单线程
执行次数 
平均消耗
时间
(ms)
平均单条
时间
(ms) 
DBCP 300 1000 3851.8 0.012839
C3P0 300 1000 6233.2 0.020777
TomcatJDBC 300 1000 3403.8 0.011346

 

结论:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年1月18日
下一篇 2014年1月18日

相关推荐