关于Tomcat的并发处理能力

类别:Java 点击:0 评论:0 推荐:
记得哪次参加Borland的会议,李维先生曾经说过Tomcat4是一个很差的版本,做负载测试的时候100个并发就可以让Server挂掉。但是 4.1就很好。正巧前几天实验室和某公司开碰头会,想敲定未来的一个B/S系统的开发平台,就要.NET和Java中选择一个。从我个人的喜恶角度讲,我 是很倾向JAVA平台的。但是公司那边却始终坚持.NET。

当我问及为何如此倾向于微软的.NET平台时,他们反问,如果选择JAVA平台的话使用什么Server软件?WebSphere?WebLogic?这些都太贵。我们的软件开发出来也就买个十几万,结果一个Server都比我们的软件贵,推不动的。

我说,那可以考虑Tomcat啊,免费的。

公司技术的回答是:"Tomcat,30个并发就崩溃掉了。"

当时我并没有做过Tomcat的负载能力测试,因此也就没有接话。但是这句话一直留在我脑海里。因为我根本不相信经历了3、4、5三个重大版本升级后的 Tomcat会这么差。

事实总是胜于雄辩的。一切分析推理不如一次测试来得实在。这两天业余时间就基本都用来写这个测试工具了。 测试工具是用Delphi 2005写的Win32应用。基本原理就是同时(基本上如此吧,生成一个新线程,再包括线程里面包含的HTTP连接控件,总归是会花点时间的,所有线程的 生成在一个循环中完成)生成一堆线程,每一个线程有一个单独的HTTP连接。这就跟某些恶意攻击工具的原理应该是一样的。

测试结果如下:

Tomcat 5.0.28/JDK1.4.2_05/Win2003,安装之后的默认配置不动(大概是最多150处理线程/JVM 64M),连接http://127.0.0.1:8080(也就是返回Tomcat的默认页),通过1000并发连接测试(反正所有的请求陆陆续续都正 确响应了)。整个测试用时10.72秒。

IIS6.0/Win2003。安装后默认配置不动(不限制连接数),连接http://127.0.0.1:80(也就是返回IIS的默认页),测试顺利完成,完成测试用时9.98秒。

当然,我这个简单的测试并不想说明Tomcat和IIS哪个更好,因为它根本就不严谨(IIS和Tomcat返回的默认页长度就有很大差别)。只是想告诉 那些抱有"Tomcat在30个并发的环境下就会崩溃"的程序员,Tomcat,或者说最起码是Tomcat 5.0.28,是一个很健壮,很值得我们考虑采用的Web Server。

本文地址:http://com.8s8s.com/it/it10778.htm