本文首先简述了Tomcat7的新特性和增强功能。然后对比tomcat6做了性能测试,测试结果表明,tomcat7的在性能上没有明显的提升,而主要贡献在于Servlet 3.0,内存检测泄露和增强的安全特性。
1 Tomcat7的特性目前tomcat7已经发布到第34个版本(tomcat7.0.34),而tomcat6现在的版本是6.0.36,所以就bug修改来说,应该算是比较稳定了。
Tomcat7新特性:
1. 使用随机数去防止跨站脚本攻击;
2. 改变了安全认证中的jessionid的机制,防止session攻击;
3. 内存泄露的侦测和防止;
4. 在war文件外使用别名去存储静态内容;
Tomcat7的增强功能:
5 对Servlet 3.0,JSP 2.2和JSP-EL 2.2的支持;
6 更容易将Tomcat内嵌到应用去中去,比如JBoss;
7 异步日志记;
根据Mark Thomas,Tomcat 7委员会的经理的说法,Tomcat 7最显著的三个特征是Servlet 3.0,内存检测泄露和增强的安全特性。不过从变更中没有看到Tomcat7在性能方面的提升,下面测试一下性能。
2 性能测试 2.1 处理静态请求 2.1.1Tomcat6处理静态请求命令:ab -n 40000 -c 2000 :8080/about.html
Timeper request: 118.038 [ms] (mean)
Timeper request: 115.213 [ms] (mean)
Timeper request: 118.873 [ms] (mean)
Timeper request: 125.233 [ms] (mean)
Timeper request: 118.147 [ms] (mean)
平均 119.101 [ms] (mean)
2.1.2Tomcat7处理静态请求命令:ab -n 40000 -c 2000 :8080/about.html
Timeper request: 116.968 [ms] (mean)
Timeper request: 119.298 [ms] (mean)
Timeper request: 120.927 [ms] (mean)
Timeper request: 119.914 [ms] (mean)
Timeper request: 123.141 [ms] (mean)
平均 120.050 [ms] (mean)
2.2 请求动态请求由于ApacheBench或者Webbench都不支持URL中存在类似loginAction!login.action字符串,而在视频去中action都是类似拼接的,这里只能用jmeter测试向Tomcat6/7发送验证登陆信息请求,故结果数据只做本节内对比,不与上节对比。
2.2.1Tomca6处理动态信息700并发 循环发送5次
:8080/loginAction!login.action?indexcode=abc&password=e10adc3949ba59abbe56e057f20f883e
平均3218.000 [ms] (mean)
2.2.2Tomcat7处理动态信息700并发 循环发送5次
:8080/loginAction!login.action?indexcode=abc&password=e10adc3949ba59abbe56e057f20f883e
平均3371.333 [ms] (mean)
2.3 性能测试小结从处理静态请求看,tomcat6平均119.101 [ms],tomcat7平均120.050 [ms],Tomcat7响应性能没有提升。
从处理动态请求看,tomcat6平均3218.000 [ms],tomcat7平均3371.333 [ms]也没有提升。
3 总结本文首先简述了Tomcat7的新特性和增强功能。然后对比tomcat6做了性能测试,测试结果表明,tomcat7的在性能上没有明显的提升,而主要贡献在于Servlet 3.0,内存检测泄露和增强的安全特性。