阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat在Linux服务器上的BIO、NIO、APR模式设置

139次阅读
没有评论

共计 3978 个字符,预计需要花费 10 分钟才能阅读完成。

一、BIO、NIO、AIO

先了解四个概念:

同步:自己亲自出马持银行卡到银行取钱(使用同步 IO 时,Java 自己处理 IO 读写)。

异步:委托一小弟拿银行卡到银行取钱,然后给你(使用异步 IO 时,Java 将 IO 读写委托给 OS 处理,需要将数据缓冲区地址和大小传给 OS(银行卡和密码),OS 需要支持异步 IO 操作 API)。

阻塞:ATM 排队取款,你只能等待(使用阻塞 IO 时,Java 调用会一直阻塞到读写完成才返回)。

非阻塞:柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞 IO 时,如果不能读写 Java 调用会马上返回,当 IO 事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)。

Java 对 BIO、NIO、AIO 的支持:

Java BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

Java NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I / O 请求时才启动一个线程进行处理。

Java AIO(NIO.2):异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的 I / O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理

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

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

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

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

二、tomcat 三种模式简介

BIO
BIO(blocking I/O),顾名思义,即阻塞式 I / O 操作,表示 Tomcat 使用的是传统的 Java I/ O 操作(即 java.io 包及其子包)。Tomcat 在默认情况下,就是以 bio 模式运行的。遗憾的是,就一般而言,bio 模式是三种运行模式中性能最低的一种。我们可以通过 Tomcat Manager 来查看服务器的当前状态。

NIO 
是 Java SE 1.4 及后续版本提供的一种新的 I / O 操作方式 (即 java.nio 包及其子包)。Java nio 是一个基于缓冲区、并能提供非阻塞 I / O 操作的 Java API,因此 nio 也被看成是 non-blocking I/ O 的缩写。它拥有比传统 I / O 操作(bio) 更好的并发运行性能。

APR 
(Apache Portable Runtime/Apache 可移植运行库),是 Apache HTTP 服务器的支持库。你可以简单地理解为,Tomcat 将以 JNI 的形式调用 Apache HTTP 服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高 Tomcat 对静态文件的处理性能。Tomcat apr 也是在 Tomcat 上运行高并发应用的首选模式。

三、tomcat 三种模式性能比较

这里我引用了网友给出的测试结果

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

四、tomcat 模式设置

我这里演示的是 tomcat7,默认是 BIO 模式的。而 tomcat8 是默认 NIO 模式的。

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

在这之前,我们先把 tomcat 管理界面配置起来,以便等下能更方便的观察我们的 bio、nio、apr 模式(如果不想设置这个,也可以一会查看 tomcat 的日志文件)

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

拉到最下面,复制红色框里的内容,在注释外粘贴,添加 manager/status 用户(这里的用户名请不要改,改了好像就不行了)

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

配置完重启 tomcat,通过 ip:port/manager/status 就可以看 tomcat 状态了,里面有服务器的信息及 tomcat 信息。

下来就是三种模式的配置步骤:

BIO 模式

tomcat7 默认就是。如果你是 tomcat8 或 9 想设置成 BIO 模式的,那么在这里修改

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

找到 port=8080 端口设置那项,只要红框内是这样的,重启 tomcat 就会使用 BIO 模式。tomcat7 默认就是这个样子

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

NIO 模式

在和设置 BIO 模式同样的位置上,将红框的内容变成这样,重启 tomcat 就会使用 NIO 模式。tomcat8 默认就是这个样子

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

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

APR 模式

启用这种模式稍微麻烦一些,需要安装一些依赖库,以下就是安装所需的条件:

  1,最新的 apr

  2,最新的 apr-util

  3,tomcat-native.tar.gz(在 tomcat/bin/ 下有相应的安装 tar 包)

不过也需要改配置文件,先来改配置文件吧,还是在同样的位置,将红框的内容变成这样(注意和 NIO 模式很像),保存退出,然后去安装依赖库

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

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

安装那三个依赖前,先看下服务器中有没有装 apr

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

我这里是装过了(好像是 tomcat 自己装的,不记得了),所以要先卸载,忽略依赖的卸载,重新装最新的

1.apr(http://apr.apache.org/download.cgi),上传解压

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

安装到 /usr/local/apr

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

./configure --prefix=/usr/local/apr && make && make install

2.apr-util(http://apr.apache.org/download.cgi),上传解压

 Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

安装到 /usr/local/apr-util,指定 apr 的目录

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-util && make && make install

 3.tomcat-native(在 tomcat/bin/ 下有相应的安装 tar 包),解压

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

安装,指定 apr 的目录和 JAVA_HOME 的目录

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

./tomcat-native-1.2.14-src/native/configure --with-apr=/usr/local/apr --with-java-home=/usr/share/jdk1.8 && make && make install

安装完后记得在 /etc/profile 文件中的 JAVA_HOME 环境变量后面多加一条 APR 的环境变量(注意你自己安装的 apr 目录)

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

用 source /etc/profile 命令让环境变量配置立即生效

启动 tomcat,访问(你 tomcat 所在服务器的 ip)192.168.25.128:8080/manager/status,这样就 ok 了

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

如果上面你不想设置 tomcat 管理界面,也可以通过日志查看

Tomcat 在 Linux 服务器上的 BIO、NIO、APR 模式设置

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04 下安装 Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04 安装 Tomcat 8 图解  http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat 配置文件 server.xml 详解  http://www.linuxidc.com/Linux/2017-10/148003.htm

Tomcat 单机多实例部署 - 多项目部署  http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149874.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3978字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中