tomcat 三种处理启动模式
Tomcat支持三种接收请求的处理方式:BIO、NIO、APR :
BIO
一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源 (Tomcat7或以下,在Linux系统中默认使用这种方式。)
NIO
利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求(Tomcat8在Linux系统中默认使用这种方式,Tomcat7必须修改Connector配置 protocol="org.apache.coyote.http11.Http11NioProtocol" 来启动)
APR
APR是使用原生C语言编写的非堵塞I/O,利用了操作系统的网络连接功能,速度很快( Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。但必须安装apr插件否则以bio方式启动,Linux如果安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://my.oschina.net/lsw90/blog/181161))
若想修改启动模式:
修改配置文件server.xml中
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为(这里修改为nio)
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
org.apache.coyote.http11.Http11NioProtocol : 表示nio处理类
org.apache.coyote.http11.Http11AprProtocol :表示apr 模式
HTTP/1.1 : 表示bio 模式
三种模式默认配置如下:
bio server.xml 配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
nio server.xml 配置
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
apr server.xml 配置
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />
三种模式之中 apr , nio ,bio 效率性能逐一降低。
Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:
Starting ProtocolHandler ["http-bio-8080"]
Starting ProtocolHandler ["http-nio-8080"]
Starting ProtocolHandler ["http-apr-8080"]
网友评论