tomcat 性能之谜

通过对tomcat 6.0.33 (bio) 和 7.0.35 (nio) 的性能测试,发现bio模型在echo应用中表现更优,tps达到22000左右,而nio模型在保持大量连接的场景更合适,但存在异常问题。当引入struts2后,tps大幅下降,表明框架可能影响性能。文章指出,应用性能不佳可能是由于开发模式和框架选择,而非tomcat本身的问题。
摘要由CSDN通过智能技术生成

从接触java web开发,并用tomcat部署了第一个jsp应用已经有好些年了,一直以来javaweb应用的部署都是依赖类似tomcat这种符合servlet规范的容器。应用部署在容器中运行,过往的经验感觉应用的表现在各种容器中其实差不太多,倒也没太在意容器本身的性能。

在最近的一个项目中,严重依赖了tomcat的comet机制,并针对这个项目做了比较全面的性能测试,感觉整体性能表现并没有达到预期。开始猜想tomcat comet机制的实现不是存在一些性能问题,于是开始对tomcat容器本身的性能进行一个摸底测试,做一些定量的分析。

开始之前,我们先进行一个猜测,形成一个预期值,并根据实测结果来检验与预期值的差异。过去很多tomcat应用项目都做过针对应用本身的性能测试,测试结果tps根据应用类型的不同在几百到一千左右,所以一直以来形成一个感觉就是tomcat的tps大概也就几千。由于这次是测试tomcat容器本身,所以我们排除掉应用的执行延迟,只使用一个最简单的应用类型:echo 响应。 tomcat的版本选择了线上常用的 6.0.33(bio模型)和 7.0.35(comet nio 模型)。

测试环境如下:

      
客户端-服务端:
     model name: Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz     
     cache size: 6144 KB     
     cpu cores:  4     
     jdk:        1.6.0_30-b12
     network:    1000Mb

     memory:     -Xms256m -Xmx256m
     Linux:      centos 5.7, kernel 2.6.18-274.el5


测试工具:
     apache benchmark

版本:
     tomcat          6.0.33
     tomcat          7.0.35
      
    

首先,实现了一个EchoServlet,它返回固定1k左右的字符串, 并且关闭了http的keep-alive机制,tomcatconnector 采用默认的bio模型。 测试结果还是挺让人吃惊的,tps均值达到了22000左右(如下所示)

tomcat 6.0.33 bio servlet 测试结果

      
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking 10.28.170.56 (be patient)
Completed 100000 requests
Completed 200000 requests
Completed 300000 requests
Completed 400000 requests
Completed 500000 requests
Completed
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值