刚刚用JMeter侧了一下Tomcat和Resin,结果Resin遥遥领先! 

我现在在做一个社区网站,用的是Tomcat,Struts,Hibernate,mysql。
因为在网上看到一些Resin的性能比Tomcat好很多的说法,自己也试了一下。
用JMeter,请求一个JSP页面。没有动态的内容和数据库调用(嘿嘿为了方便,改天在试一下更复杂一点的),文件大小6041b,共123行。
测试结果,Resin的请求响应速度比Tomcat快5倍。
---------------------------------------------------------------------
100个线程每隔1秒钟请求一次,如此循环100次。结果Resin的平均响应时间为 304ms , tomcat为 1557。
具体数据如下:
Number of Threads:100
Ramp-Up Period(in seconds):1
Loop Count:100
结果为:
resin: Average: 304ms, Deviation: 1605
tomcat: Average: 1557, Deviation: 4731

---------------------------------------------------------------------

看来,我是得改用Resin了。(可是不太熟啊)
还有一个问题向请教高手。
如果Resin和Apache结合起来,让Apache处理静态的,动态的扔给Resin处理的话,应该怎么能够让Apache把Struts的*.do请求也仍给Resin处理啊?应该怎么配置啊?整个晚上都在搞这个东西,头都大了。请高手帮忙啊!

resin响应JSP的速度比响应Html的速度块啊(同样的内容)!

记得以前微软在.net刚出来的时候建议程序员把静态的html都改成aspx后缀的动态文件,当时我还不太理解这样做的好处。。。
不过现在看来,这样的确可以提高性能。
我认为这可能是因为JSP编译成Servlet以后就是直接把源代码里面的内容write,而静态的文件的话必须先read文件内容再write。

我刚刚又比较了一下apache和resin处理静态HTML请求的响应速度。结果还是resin胜出,比apache快了1/3左右。侧了三次都差不多如此。真不敢相信apache也比不过resin!如果真是这样,我也没必要做什么apache和resin的结合了,全用resin反而更省事、更快啊!而且把所有的静态文件的后缀统统改称.JSP,呵呵。。。

不知道更复杂的环境里面会是怎样,有没有人在这方面做个更详细的测试?不妨拿出来大家一起讨论讨论吧。

我今天的结论是:

1.处理JSP,resin比tomcat快。
2.处理HTML,resin也比apache快。
3.resin处理JSP,比处理HTML快。

测试版本:
apache2.0.52
tomcat4.1
resin2.1.14

我刚刚又换了BEA的虚拟机jrockit-j2sdk1.4.2_04侧了一下resin,结果速度又提升了很多。
BEA的虚拟机好像越到后来越快啊,不知道用了什么算法。
看来BEA不单单是Weblogic做得好,他的虚拟机也比Sun的作得好很多啊!
还是上面的测试条件侧的JSP请求,结果一次比一次快,第三次的测试结果平均响应速度居然能够达到24ms啊!
以后我也得改用BEA的虚拟机了,呵呵。。。
大家也可以改装BEA的虚拟机试一试,真的提升不少性能。

BEA和IBM在java推广上做的比sun好,jdk也是一样的,对了BEA的jdk和sun的在api上有没有用法的区分,是自由下载的吗?我一直用sun的jdk,对BEA的不了解

> BEA和IBM在java推广上做的比sun好,jdk也是一样的,对了BE
> 的jdk和sun的在api上有没有用法的区分,是自由下载的吗??> 一直用sun的jdk,对BEA的不了解

我也刚刚装了BEA的虚拟机,Resin和Eclipse都在这上面跑,用起来不需要什么设置,跟Sun的一样。
不过用JMeter的时候碰到了问题。其启动脚本里的
-------------------------------------------------------------
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
set EVACUATION=-XX:MaxLiveObjectEvacuationRatio=20%
set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution
-------------------------------------------------------------
这几行通不过,好像启动参数的用法跟Sun的有点不一样。把这些都注释掉就可以启动JMeter了。(我也还没来得及仔细研究Jrockit的用法。)
我还没有把这几行注释掉以后在Sun的虚拟机上跑过。


我是先把Sun的JDK和JRE统统从系统里面删掉,然后装BEA的JDK和JRE的。
另外,在注册表里面把以前JDK的路径统统替换成新的路径。
就是说在注册表里面用C:\jrockit-j2sdk1.4.2_04(BEA的JDK路径)替换了C:\j2sdk1.4.2_03(Sun的JDK路径)。这样就可以不用重装或配置系统里的所有在原有JDK上跑的软件,像Resin, Tomcat, Eclipse...

我也下了jrockit-j2sdk1.4.2_04原来是WebLogic JRockit

正在试用中,观注! ! !

set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
set EVACUATION=-XX:MaxLiveObjectEvacuationRatio=20%
set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution

以上都是sun jvm运行参数,WebLogic JRockit JVM可能不支持

自己用也到无所谓,如果是服务器的话,真是值得装Jrockit啊!

Had u tested the Tomcat 5.5 ?

Tomcat 5.5 is the fastest JSP/Servlet container what i ever used !

严重关注事态发展,这个帖子不错……

我看到测试只针对单个文件,我觉得这并不能说明问题。当网站的体积达到数十兆、上百兆,并发访问增多的情况下,测试结果可能会有不同。不过我没有测试过。

to:robbin

麻烦指点一下,我在用ManagementConsole时,连接不到我的服务器,服务器是tomcat -Management加入哪个启动脚本中呀。

换Resin以后Struts出现了一些问题。望高手指点:

web.xml里面action映射设置成带斜杠的"/*.do",页面里的<html:link action="/myaction">XXX</html:link>就不能用了。解析成html以后变成了
<a href="/context">XXX</a>,而正确的结果应该是<a href="/context/mysaction.do">XXX</a>。<html:form action="myaction">也有同样的问题。

如果在web.xml里面action映射设置成不带斜杠的"*.do",则resin就不能人出来,报404错误。

以前在Tomcat里面没碰到过这种问题。
有没有人在resin里面用Struts的时候碰到过这个问题?如何解决啊?