今早对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    5667
		11064    10986    5570
		11625    10469    4688

1000    7994     8321     5021
        10045    9885     5006
		10162    10156    4736
		9842     10166    4762

2000    8040     7803     4668
        8487     8148     4562

3000    6540     6784     4528
        7145     7166     4158

10000   4303     5099     3500
        4558     5973     3006
		4457     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(Http11NioProtoc
ol.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 space
SEVERE:Memory usage is low, parachute is non existent, your system may start failing.

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐