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

今早对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次。

BIONIONIO 并发 Tomcat Netty Jetty 500 87238311447111270 10737 566711064 10986 557011625 10469 46881000 79948321502110045 9885500610162 10156 4736984210166 47622000 8040780346688487814845623000 65406784452871457166415810000 430350993500455859733006445750373471

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

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

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

补充:

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

严重: java.lang.OutOfMemoryError: Java heap spaceat 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.

享受每一刻的感觉,欣赏每一处的风景,这就是人生。

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

相关文章:

你感兴趣的文章:

标签云: