Tomcat、Netty、Jetty很有趣的简单压测报告

来源:互联网 发布:二维数组push 编辑:程序博客网 时间:2024/04/29 02:28

今早对Tomcat7.0.5、Netty3.2.3、Jetty-hightide-7.2.2做了一个简单的压测,

测试方案我想肯定是不太严谨的,但是对于快速评估还是有点价值的,测试结果出乎意外。

 

压测工具: ApacheBench(简称ab), Version 2.3

 

测试服务器有两台:

被压测服务器 和 运行ab的服务器

 

两台服务器的配置都是:

64位Linux,双CPU,4G内存

 

 

Tomcat7.0.5 使用BIO(阻塞IO),最大线程开了200个

Netty3.2.3和Jetty-hightide-7.2.2都使用NIO,Jetty最大线程开了250个

 

请求总数固定是10万,对每个请求的响应字节数固定是1k

 

以下是测试结果:

第一列是最大并发数,其他三列是每妙处理的请求数,

并发500、1000时测了4次,并发2000、3000测了两次,并发10000时测了3次。

 

        BIO      NIO      NIO 并发   Tomcat   Netty    Jetty 500    8723     8311     4471        11270    10737    566711064    10986    557011625    10469    46881000    7994     8321     5021        10045    9885     500610162    10156    47369842     10166    47622000    8040     7803     4668        8487     8148     45623000    6540     6784     4528        7145     7166     415810000   4303     5099     3500        4558     5973     30064457     5037     3471

 

 

可以看出Tomcat和Netty只有达到10000并发时才开始有明显差距,

而Jetty在并发为2000以下时都比Tomcat和Netty要差一倍,即使达到10000并发,Jetty的NIO也比Tomcat的BIO差。

 

从这个结果来看,我真的很怀疑在64位OS和高速局域网中是否有必要使用NIO?

 

补充:

Tomcat7.0.5的NIO基本上不可用,每次压都是:

 

严重: java.lang.OutOfMemoryError: Java heap space        at org.apache.coyote.http11.InternalNioInputBuffer.<init>(InternalNioInputBuffer.java:58)        at org.apache.coyote.http11.Http11NioProcessor.<init>(Http11NioProcessor.java:77)        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.createProcessor(Http11NioProtocol.java:435)        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:363)        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1526)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)        at java.lang.Thread.run(Thread.java:619)Exception in thread "http-8080-exec-321" java.lang.OutOfMemoryError: Java heap spaceSEVERE:Memory usage is low, parachute is non existent, your system may start failing.

原创粉丝点击