Tomcat的工作模式&運行模式
1、三種工作模式
Tomcat作為servlet容器,有三種工作模式:
1、獨立的servlet容器,servlet容器是web服務器的一部分;
2、進程內的servlet容器,servlet容器是作為web服務器的插件和java容器的實現,web服務器插件在內部地址空間打開一個jvm使得java容器在內部得以運行。反應速度快但伸縮性不足;
3、進程外的servlet容器,servlet容器運行於web服務器之外的地址空間,並作為web服務器的插件和java容器實現的結合。反應時間不如進程內但伸縮性和穩定性比進程內優;
進入Tomcat的請求可以根據Tomcat的工作模式分為如下兩類:
Tomcat作為應用程序服務器:請求來自於前端的web服務器,這可能是Apache, IIS, Nginx等;
Tomcat作為獨立服務器:請求來自於web瀏覽器;
2、三種運行模式
常見於server.xml中的連接器類型通常有4種:
1)HTTP連接器
2)SSL連接器
3)AJP 1.3連接器
4)proxy連接器
Tomcat Connector(連接器)有三種運行模式:
1)bio(blocking I/O)
即阻塞式I/O操作,表示Tomcat使用的是傳統的Java I/O操作(即java.io包及其子包)。是基於JAVA的HTTP/1.1連接器,Tomcat7以下版本在默認情況下是以bio模式運行的。一般而言,bio模式是三種運行模式中性能最低的一種。我們可以通過Tomcat Manager來查看服務器的當前狀態。(Tomcat7 或以下,在 Linux 系統中默認使用這種方式)
一個線程處理一個請求,缺點:並發量高時,線程數較多,浪費資源
server.xml 文件中的配置 (端口號自己設定,只要不占用就行)
<Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
2)nio(new I/O)
nio是Java SE 1.4及后續版本提供的一種新的I/O操作方式(即java.nio包及其子包)。
Java nio是一個基於緩沖區、並能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的並發運行性能。
要讓Tomcat以nio模式來運行只需要在Tomcat安裝目錄/conf/server.xml 中將對應的中protocol的屬性值改為 org.apache.coyote.http11.Http11NioProtocol即可
利用 Java 的異步請求 IO 處理,可以通過少量的線程處理大量的請求
注意: Tomcat8 以上版本在 Linux 系統中,默認使用的就是NIO模式,不需要額外修改 ,Tomcat7必須修改Connector配置來啟動
server.xml 文件中的配置
<Connector port="9090" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
3)apr(Apache Portable Runtime/Apache可移植運行時)
Tomcat將以JNI的形式調用Apache HTTP服務器的核心動態鏈接庫來處理文件讀取或網絡傳輸操作,從而大大地提高Tomcat對靜態文件的處理性能。Tomcat apr也是在Tomcat上運行高並發應用的首選模式。從操作系統級別來解決異步的IO問題
APR是使用原生C語言編寫的非堵塞I/O,利用了操作系統的網絡連接功能,速度很快。
但是需先安裝apr和native,若直接啟動就支持apr,能大幅度提升性能,不亞於魔獸開局爆高科技兵種,威力強大.
server.xml 文件中的配置
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" URIEncoding="UTF-8" maxConnections="10000" maxThreads="2000" acceptCount="2000" minSpareThreads="100" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000" redirectPort="8443" />
配置之前首先安裝APR以及與 Tomcat-native 整合。
安裝直通車:
