tomcat運行方式詳解
tomcat的運行模式有3種
一、bio(blocking I/O)
即阻塞式I/O操作,表示Tomcat使用的是傳統的Java I/O操作(即java.io包及其子包)。是基於JAVA的HTTP/1.1連接器,每一請求都需要啟動一個線程來處理,線程開銷較大,不能處理高並發的場景。一般而言,bio模式是三種運行模式中性能最低的一種。我們可以通過Tomcat Manager來查看服務器的當前狀態。
二、nio(new I/O)
是Java SE 1.4及後續版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個基於緩沖區、並能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的並發運行性能。
想運行在該模式下,直接修改server.xml裏的Connector節點,修改protocol為:
protocol="org.apache.coyote.http11.Http11NioProtocol"
啟動後,就可以生效。
利用 Java 的異步請求 IO 處理,可以通過少量的線程處理大量的請求
三、apr
Tomcat將以JNI的形式調用Apache HTTP服務器的核心動態鏈接庫來處理文件讀取或網絡傳輸操作,從而大大地提高Tomcat對靜態文件的處理性能。Tomcat apr也是在Tomcat上運行高並發應用的首選模式。
Note: 查看tomcat運行模式方法:
1、查看配置
2、查看catalina.out日誌中關鍵字 NIO: http-nio apr:http-apr bio:http-bio(在tomcat7及7以下版本默認使用)
官方對三種方式簡單對比
Java Blocking Connector Java Non Blocking Connector APR/native Connector
BIO NIO APR
Classname Http11Protocol Http11NioProtocol Http11AprProtocol
Tomcat Version 3.x onwards 6.x onwards 5.5.x onwards
Support Polling NO YES YES
Polling Size N/A maxConnections maxConnections
Read HTTP Request Blocking Non Blocking Blocking
Read HTTP Body Blocking Sim Blocking Blocking
Write HTTP Response Blocking Sim Blocking Blocking
Wait for next Request Blocking Non Blocking Non Blocking
SSL Support Java SSL Java SSL OpenSSL
SSL Handshake Blocking Non blocking Blocking
Max Connections maxConnections maxConnections maxConnections
tomcat運行方式詳解