1. 程式人生 > >tomcat的三種執行模式

tomcat的三種執行模式

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"]