Tomcat Connector三种运行模式
Tomcat的运行模式有3种
第一种, bio
bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
Tomcat7或以下,在Linux系统中默认使用这种方式。
在catalina.out日志文件中可看到Starting ProtocolHandler ["http-bio-8080"]
第二种, nio
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)更好的并发运行性能。
Tomcat8在Linux系统中默认使用这种方式,Tomcat7必须修改Tomcat安装目录/conf/server.xml里面Connector的protocol配置即可:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>
启动后,就可以生效。
在catalina.out日志文件中可看到Starting ProtocolHandler ["http-nio-8080"]
第三种,apr
apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。
系统必须要安装apr和native,修改protocol为org.apache.coyote.http11.Http11AprProtocol
安装apr
yum -y install apr apr-devel
安装native
进入tomcat/bin目录,比如:
cd /usr/local/tomcat/bin/
tar xzfv tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native/
./configure --with-apr=/usr/bin/apr-1-config
make && make install
安装完成之后 会出现如下提示信息
Libraries have been installed in: /usr/local/apr/lib
设置CATALINA_OPTS
安装成功后还需要对tomcat设置环境变量,方法是在setenv.sh文件中添加CATALINA_OPTS:
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
修改8080端对应的conf/server.xml里Connector的protocol
protocol="org.apache.coyote.http11.Http11AprProtocol"
在catalina.out日志文件中可看到Starting ProtocolHandler ["http-apr-8080"]