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