详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

栏目: 服务器 · 发布时间: 5年前

内容简介:Tomcat8.0起已经默认nio模式,不需要做修改,BIO模式也已经抛弃了,今天主要介绍下tomcat的三种运行模式:BIO、NIO、ARP。

概述

Tomcat8.0起已经默认nio模式,不需要做修改,BIO模式也已经抛弃了,今天主要介绍下tomcat的三种运行模式:BIO、NIO、ARP。

简述及配置运行模式

1、bio:没经过任何优化和处理,几百并发性能极低下。

详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

配置server.xml

<Connector port="8080" protocol="HTTP/1.1" 
 connectionTimeout="20000" 
 redirectPort="8443"  
URIEncoding="UTF-8"/> 

2、nio:利用 java 的异步io技术,no blocking IO技术.

详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

配置server.xml

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
 connectionTimeout="20000" 
 redirectPort="8443"  
URIEncoding="UTF-8"/> 

3、apr模式

安装最困难,操作系统级别的控制,但也是在Tomcat上运行高并发应用的首选模式。

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" 
 connectionTimeout="20000" 
 redirectPort="8443"  
URIEncoding="UTF-8"/> 

配置apr模式之后还需要安装 apr 、 apr-utils 、tomcat-native包

(1)apr 安装

# tar zxf apr-1.5.2.tar.gz -C /usr/local/src/ 
# cd /usr/local/src/apr-1.5.2/ 
# ./configure --prefix=/usr/local/apr && make && make install 

(2)apr-utils 安装

# tar zxf apr-util-1.5.4.tar.gz -C /usr/local/src/ 
# cd /usr/local/src/apr-util-1.5.4/ 
# ./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-utils && make && make install  

(3)tomcat-native安装

# cd /usr/local/apache-tomcat-7.0.65/bin/ 
# tar zxf tomcat-native.tar.gz 
# cd tomcat-native-1.1.33-src/jni/native 
# ./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/java/ && make && make install 

(4)配置APR环境变量

# vim /etc/profile 
新增配置以下配置 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib 
使配置生效 
# source /etc/profile 

BIO、NIO、AIO适用场景分析:

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

这三种模式的不同之处如下:

  • BIO:

一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。

Tomcat7或以下,在 Linux 系统中默认使用这种方式。

  • NIO:

利用Java的异步IO处理,可以通过少量的线程处理大量的请求。

Tomcat8在Linux系统中默认使用这种方式。

  • APR:

即Apache Portable Runtime,从操作系统层面解决io阻塞问题。

Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。

官方对这三种的区别的详细说明:

详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:

  • Starting ProtocolHandler ["http-bio-8080"]
  • Starting ProtocolHandler ["http-nio-8080"]
  • Starting ProtocolHandler ["http-apr-8080"]

个人觉得在 tomcat bio、nio、apr 模式中,每种都会有各自适用的场合,也不能说哪个好那个不好,就像 tomcat 内存方面的配置,如果内存设置的过大,gc 垃圾回收机制就会变慢;如果内存设置的过小,tomcat又会出现内存溢出的情况,所以设置在一个合适的范围很重要,不仅不会出错,并且gc回收频繁使性能达到一个最优的结果。当然,这也需要根据不同的场合进行不同的测试才能产生最优的结果!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Distributed Algorithms

Distributed Algorithms

Wan Fokkink / The MIT Press / 2013-12-6 / USD 40.00

This book offers students and researchers a guide to distributed algorithms that emphasizes examples and exercises rather than the intricacies of mathematical models. It avoids mathematical argumentat......一起来看看 《Distributed Algorithms》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具