即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。是基于Java的http/1,1 连接器。Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat manager 来查看服务器的当前状态(Tomcat7或以下,在 Linux 系统中默认使用这种方式)
简明来说就是:每个客户端连接过来的,服务器都会启动一个线程来处理客户端的请求。
缺点:
是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即可
nio模式工作原理:
1、由一个专门的线程处理所有的I/O事件、并负责分发。
2、事件驱动机制,而不再同步地去监视事件
3、线程间通过wait,notify等方式通讯。保证每次上下文切换都是有意义的,减少无谓的线程切换。
NIO采用双向通道(channel)进行数据传输,而不是单向的流(stream)。在通道上我们可以注册指定的事件,一共有如下四种事件:
1、服务器端接收客户端连接事件OP_ACCEPT(16)
2、客户端连接服务器端事件OP_CONNECT(8)、
3、读事件OP_READ(1)
4、写事件OP_WRITE(4)
服务端和客户端各自维护一个管理通道的对象,我们称之为selector,该对象能检测一个通道或多个通道上的事情。以服务端为例,如果服务端的selector上注册了读事件时刻客户端给服务端发送了一些数据,BIO这时会调用read()方法阻塞地读取数据,而NIO的服务端会在selector中添加一个读事件。服务端的处理线程会轮询地访问selector,如果访问selector时发现有感兴趣的事件到达则处理这些事件;如果没有感兴趣的事件到达则处理线程会一直阻塞,直到感兴趣的事件到达为止。
利用java的异步请求I/O处理,可以通过少量的线程处理大量的请求
注意:Tomcat 8 以上版本在linux系统中,默认使用的就是NIO模块,不需要额外的修改,Tomcat7 必须修改Connector配置来启动
apr(Apache portable Run-time libraries/Apache可移植运行库)是Apache HTTP服务器的支持库。
在apr模式下,Tomcat将以JNI(Java Native Interface)的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大提高Tomcat对静态文件的处理性能。Tomcat apr是在Tomcat上运行高并发应用的首选模式。
而要让Tomcat以apr模式运行,
对于Tomcat 7.0.30开始向后的版本,只需要再次修改protocol为”org.apache.coyote.http11.Http11AprProtocol”即可。
对于Tomcat 7.0.30之前的版本,还需要以下三个组件的支持:
1.APR library[APR库]
2.JNI wrappers for APR used by Tomcat (libtcnative)[Windows操作系统上一个名为tcnative-1.dll的动态链接库文件]
3.OpenSSL libraries[OpenSSL库]
设置APR模式比较麻烦,需要安装一些依赖库。
(1)、最新的apr
(2)、最新的apr-util
(3)、tomcat-native.tar.gz(在Tomcat/bin下有相应的tar包)
安装三个依赖之前看看服务器中有没有apr
如果有,卸载掉,安装最新的apr
第一步:下载三个apr依赖
地址:http://apr.apache.org/download.cgi
第二步:编译apr组件和Tomcat-native组件。
(1)、编译前需要安装gcc和cmake,建议使用root用户,防止权限问题
yum install cmake gcc expat-devel
(2)、安装apr、apr-util、apr-iconv
新建 mkdir/usr/local/tomcat/apr/apr
mkdir/usr/local/tomcat/apr/apr-util
mkdir/usr/local/tomcat/apr/apr-iconv
将下载的apr组件上传到相应的文件夹
1 、 安装apr
cd /usr/local/tomcat/apr/apr/
./configure –prefix=/usr/local/apr/
Make
Make install
2、 安装apr-iconv
Cd /usr/local/tomcat/apr/apr-iconv
./configure –prefix=/usr/local/apr-iconv –with-apr=/usr/local/apr
Make
Make install
3、 安装apr-util
Cd /usr/local/tomcat/apr/apr-util
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr –with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
Make
Make install
(3)、安装Tomcat-native
Cd /usr/local/tomcat/bin/tomcat-native-1.2.17-src/native
./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/java/jdk.1.8.0_181
Make
Make install
4、修改环境变量
Vi /etc/profile
在结尾处添加
Export LD_LIBRARY_PATH=/usr/local/apr/lib
5、修改tomcat下server.xml
6、修改SSLEngine为off
启动tomcat服务