天天看點

Tomcat兩種Http Connector的粗略測試比較

Tomcat有兩種主要的Http Connector

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: Win7 32bit

Tomcat:6.0.26

RAM: 4G

CPU: P8700