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

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

390次阅读
没有评论

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992617
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...