Tomcat從5.5版本開始,支持如下四種Connector的配置分別爲: linux
Java代碼
- 1.<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>
Java代碼
- 2.<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"
- redirectPort="8443"/>
Java代碼
- 3.<Connector executor="tomcatThreadPool"
- port="8081" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
Java代碼
- 4.<Connector executor="tomcatThreadPool"
- port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
- connectionTimeout="20000"
- redirectPort="8443" />
咱們姑且把上面四種Connector按照順序命名爲 NIO, HTTP, POOL, NIOP 數據庫
爲了避免讓其餘因素影響測試結果,咱們只對一個很簡單的jsp頁面進行測試,這個頁面僅僅是輸出一個Hello World。假設地址是 http://tomcat1/test.jsp apache
咱們依次對四種Connector進行測試,測試的客戶端在另一臺機器上用ab命令來完成,測試命令爲: ab -c 900 -n 2000 http://tomcat1/test.jsp,最終的測試結果以下表所示(單位:平均每秒處理的請求數): tomcat
Java代碼
- NIO HTTP POOL NIOP
- 281 65 208 365
- 666 66 110 398
- 692 65 66 263
- 256 63 94 459
- 440 67 145 363
由這五組數據不難看出,HTTP的性能是很穩定,可是也是最差的,而這種方式就是Tomcat的默認配置。NIO方式波動很大,但沒有低於280 的,NIOP是在NIO的基礎上加入線程池,多是程序處理更復雜了,所以性能不見得比NIO強;而POOL方式則波動很大,測試期間和HTTP方式同樣,不時有停滯。 併發
因爲linux的內核默認限制了最大打開文件數目是1024,所以這次併發數控制在900。 jsp
儘管這一個結果在實際的網站中由於各方面因素致使,可能差異沒這麼大,例如受限於數據庫的性能等等的問題。但對咱們在部署網站應用時仍是具備參考價值的. 性能