背景
  公司的产品一直使用的是DBCP作为连接池。但是最近在客户环境发现当并发增加时,宕机鸟。已经对数据库查询进行了优化,但是还是会发生Tomcat宕机的情况,想到更换数据库连接池。
  But换或者不换都要有数据佐证喽。因此着手测试对比。
  测试环境
       | 应用服务器 | Tomcat 5.5 | 
     | 测试工具 | JMete 2.8 | 
     | 数据库 | Oracle 11g | 
 
  DBCP & Proxool
    测试场景:系统登录(一次登录操作需要>14次的数据库连接操作)
  
    
  测试结果(20秒内模拟50个进程循环3次)
  DBCP
       | sampler_label | aggregate_report_count | average | aggregate_report_median | aggregate_report_90%_line | aggregate_report_min | aggregate_report_max | aggregate_report_rate | aggregate_report_bandwidth | 
     | login:HTTP请求 | 150 | 6906 | 6262 | 13137 | 461 | 16022 | 3.071505 | 1.643735 | 
     | 总体 | 150 | 6906 | 6262 | 13137 | 461 | 16022 | 3.071505 | 1.643735 | 
 
  proxool
       | sampler_label | aggregate_report_count | average | aggregate_report_median | aggregate_report_90%_line | aggregate_report_min | aggregate_report_max | aggregate_report_rate | aggregate_report_bandwidth | 
     | login:HTTP请求 | 150 | 2959 | 3165 | 4620 | 8 | 5522 | 4.797083 | 5.380354 | 
     | 总体 | 150 | 2959 | 3165 | 4620 | 8 | 5522 | 4.797083 | 5.380354 | 
 
   
  结论
  1.         从以上测试结果看,proxool的性能明显优于DBCP。
  2.         另外针对Tomcat 5.5和Tomcat 6.0也做了测试,发现Tomcat不同版本间的差异并不大,因此决定暂时不更换应用服务器。
   
  下一步
  利用jrockit分析系统内存泄露情况,进行改进。