Tomcat Connector的三種不同的運行模式性能相差很大,有人測試過的結果如下:
這三種模式的不同之處如下:
BIO:
一個線程處理一個請求。缺點:併發量高時,線程數較多,浪費資源。
Tomcat7或以下,在Linux系統中默認使用這種方式。
NIO:
利用Java的異步IO處理,可以通過少量的線程處理大量的請求。
Tomcat8在Linux系統中默認使用這種方式。
Tomcat7必須修改Connector配置來啓動:
APR:
即Apache Portable Runtime,從操作系統層面解決io阻塞問題。
Tomcat7或Tomcat8在Win7或以上的系統中啓動默認使用這種方式。
Linux如果安裝了apr和native,Tomcat直接啓動就支持apr。(安裝方法:http://www.cnblogs.com/nb-blog/p/5278502.html)
官方對這三種的區別的詳細說明:
Tomcat啓動的時候,可以通過log看到Connector使用的是哪一種運行模式:
Starting ProtocolHandler [“http-bio-8080”]
Starting ProtocolHandler [“http-nio-8080”]
Starting ProtocolHandler [“http-apr-8080”]