Skip to content

linux benchmark

wenshao edited this page Dec 14, 2012 · 43 revisions

这个测试的目的是验证当前常用数据库连接池的性能。

testcase

  Connection conn = dataSource.getConnection();
  PreparedStatement stmt = conn.preparedStatement("select 1");
  ResultSet rs = stmt.executeQuery();
  while (rs.next()) {
  }
  rs.close();
  stmt.close();
  conn.close();
property value
initialSize 10
minPoolSize 10
maxPoolSize 50

测试各种并发场景下执行申请1,000,000(一百万)次总耗时的性能对比。

#环境

  • OS linux 3.5.0-19-generic X86_64
  • CPU XEON E5-2450 双路共16核32物理线程
  • Memory 48G
  • JDK 1.7.0_10

1 threads

耗时(毫秒) 物理连接创建次数 有错误
druid 273 10
tomcat-jdbc 398 10
dbcp 636 11
jboss-datasource 1,470 10
boneCP 3,070 51
c3p0 4,035 50
proxool 4,983 10
## 结果分析 1. druid性能最优,并且工作状态正常。 2. dbcp会创建11个物理连接,超过initialSize和minPoolSize一个。 3. boneCP和c3p0完全不遵循minPoolSize的配置。 4. proxool性能最差。 5. 单线模式下,都没有抛异常。但工作状态符合预期的有druid/tomcat-jdbc/jboss-datasource/proxool,不符合期待的是dbcp/boncCP/c3p0。

2 threads

耗时(毫秒) 物理连接创建次数 有错误
druid 931 10
tomcat-jdbc 2,157 10
dbcp 4,012 11
jboss-datasource 2,499 10
boneCP 2,324 51
c3p0 6,429 50
proxool 5,462 10
Clone this wiki locally