Tomcat两种Http Connector的粗略测试比较

Tomcat有两种主要的HttpConnector

org.apache.coyote.http11.Http11Protocol

支持参数:maxThreads,minSpareThreads,maxSpareThreads,acceptCount

org.apache.coyote.http11.Http11NioProtocol

支持参数:maxThreads

后者加入了Nio的运用,据说能提升性能

为了验证效果,粗略进行了测试,方法:

1)新建测试Servlet,其中做100,000,000次空循环

2)测试程序对测试Servlet同时发起一定数量的Http请求,看请求的成功率

3)调整参数和请求数量进行多轮测试,比较测试结果

测试结果:

1)Http11Protocol

并发请求从200逐步增加至1000。

在并发500以下的阶段时,在运行稳定后还是可以达到较高的请求成功率(90以上),但需要对应调高参数,如在并发500时,maxThreads=500,acceptCount=166

在并发500以上的阶段时,并发数再继续增加,成功率会明显下降,报大量“拒绝连接”错误;即使调高参数,效果并不明显。

在并发1000阶段,maxThreads=500,acceptCount=166,运行稳定后成功率大概在80

在并发1000以上阶段,很容易出现OutOfMemory错误(没有调大JVM内存,估计是

Socket连接不断增加,有没有及时释放)

2)Http11NioProtocol

并发数一直增加至1500,成功率都很高(接近100)。而且当前线程数基本维持在100-200水平,并没有随着并发数的增加而成比例增加;测试完后,可以很快看到线程数很快下降;内存也没有出现错误。

初步来看,Http11Protocol应对大并发量还是力不从心;Http11NioProtocol的优化效果则较明显,运行稳定、有效率且资源控制得较好。可进一步在实际环境中应用,在深入分析。

测试环境:

OS:Win732bit

Tomcat:6.0.26

RAM:4G

CPU:P8700

相关推荐