Tomcat Connector的三種不同的運行模式


Tomcat Connector的三種不同的運行模式性能相差很大,有人測試過的結果如下:

這三種模式的不同之處如下:
  • BIO:
一個線程處理一個請求。缺點:並發量高時,線程數較多,浪費資源。
Tomcat7或以下,在Linux系統中默認使用這種方式。
  • NIO:
利用Java的異步IO處理,可以通過少量的線程處理大量的請求。
Tomcat8在Linux系統中默認使用這種方式。
Tomcat7必須修改Connector配置來啟動:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
         connectionTimeout="20000" redirectPort="8443"/> 
  • APR:
即Apache Portable Runtime,從操作系統層面解決io阻塞問題。
Tomcat7或Tomcat8在Win7或以上的系統中啟動默認使用這種方式。
Linux如果安裝了apr和native,Tomcat直接啟動就支持apr。(安裝方法:http://www.cnblogs.com/nb-blog/p/5278502.html)
 
官方對這三種的區別的詳細說明:
                  Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector 
                             BIO                         NIO                       APR 
Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol 
Tomcat Version           3.x onwards                 7.x onwards              5.5.x onwards 
Support Polling              NO                          YES                       YES 
Polling Size                 N/A                   maxConnections             maxConnections 
Read Request Headers      Blocking                  Sim Blocking                   Blocking 
Read Request Body         Blocking                  Sim Blocking                   Blocking 
Write Response            Blocking                  Sim Blocking                   Blocking 
Wait for next Request     Blocking                  Non Blocking               Non Blocking 
Max Connections        maxConnections              maxConnections             maxConnections 
 
Tomcat啟動的時候,可以通過log看到Connector使用的是哪一種運行模式:
  • Starting ProtocolHandler ["http-bio-8080"]
  • Starting ProtocolHandler ["http-nio-8080"]
  • Starting ProtocolHandler ["http-apr-8080"]
http://blog.csdn.net/l1028386804/article/details/69663493


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM