Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化 Tomcat Connector 是请求接收环节与请求处理环节的连接器,具体点说,就是将接收到的请求传递给Tomcat WEB容器进行处理。Tomcat可以处理的不同协议的请求,例如HTTP协议、AJP协议。其中AJP是Tomcat与其他Web Server(例如Apache Server、IIS等)连接使用的协议。对于HTTP协议,根据处理Socket中IO的方式的不同,又可以分为BIO、NIO、APR方式。 Tomcat Connector默认配置 HTTP/1.1 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> (一)BIO:(blocking I/O)是指阻塞式I/O操作,Tomcat在默认情况下就是以bio模式运行的。一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。 org.apache.coyote.http11.Http11Protocol <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/> (二)NIO/NIO2:(non-blocking I/O)是非阻塞I/O操作。NIO是一个基于缓冲区并能提供非阻塞I/O操作的Java API,它拥有比传统的BIO更好的并发运行性能。利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。 Tomcat7必须修改Connector配置来启动。 org.apache.coyote.http11.Http11NioProtocol <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/> Tomcat8以后NIO2模式 org.apache.coyote.http11.Http11Nio2Protocol <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443"/> (三)APR:(Apache Portable Runtime),即Apache可移植运行库,APR的使命是创建和维护一套软件库,以便在不同操作系统(Windows、Linux等)底层实现的基础上提供统一的API,是从操作系统层面解决IO阻塞问题、异步IO问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式在apr模式下。Tomcat将以JNI(Java Native Interface)的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大提高Tomcat对静态文件的处理性能。Tomcat apr是在Tomcat上运行高并发应用的首选模式。Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。Linux如果安装了apr和native,Tomcat直接启动就支持APR。 org.apache.coyote.http11.Http11AprProtocol <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443"/> (责任编辑:IT) |