服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Tomcat - Tomcat在Linux服务器上的BIO、NIO、APR模式设置方法

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

2021-08-27 16:25dijia478 Tomcat

下面小编就为大家分享一篇Tomcat在Linux服务器上的BIO、NIO、APR模式设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一、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模式设置方法

?
1
2
3
<connector port="8080" protocol="http/1.1"
        connectiontimeout="20000"
        redirectport="8443" />

nio模式

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

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

?
1
2
3
<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模式设置方法

?
1
2
3
<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在linux服务器上的bio、nio、apr模式设置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/dijia478/p/8085143.html

延伸 · 阅读

精彩推荐
  • TomcatTomcat CentOS安装实现过程图解

    Tomcat CentOS安装实现过程图解

    这篇文章主要介绍了Tomcat CentOS安装实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考...

    agrin5842021-09-15
  • TomcatTomcat安装配置方法图文教程

    Tomcat安装配置方法图文教程

    这篇文章主要为大家详细介绍了Tomcat安装配置方法图文教程,java环境变量如何配置,Eclipse安装配置方法图文教程 ,为大家分享了三个教程,感兴趣的小伙...

    Tomcat教程网13292021-08-11
  • Tomcat解决Tomcat的maxPostSize属性的配置需要注意的问题

    解决Tomcat的maxPostSize属性的配置需要注意的问题

    这篇文章主要介绍了解决Tomcat的maxPostSize属性的配置需要注意的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    life is wonderful12012021-09-13
  • TomcatTomcat整体结构简单介绍

    Tomcat整体结构简单介绍

    这篇文章主要介绍了Tomcat整体结构简单介绍,Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象,需要的朋友...

    叫我田露也行12302021-09-07
  • TomcatTomcat服务器的安全设置

    Tomcat服务器的安全设置

    tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐。不过,在默认配置下其存在一定的安...

    IT专家网9002021-08-03
  • Tomcat一次tomcat源码启动控制台中文乱码的调试过程记录

    一次tomcat源码启动控制台中文乱码的调试过程记录

    平时在使用tomcat做一些服务的时候经常遇到各种乱码问题,下面这篇文章主要给大家介绍了一次tomcat源码启动控制台中文乱码的调试过程,需要的朋友可以...

    zhoutaoping199211852021-09-24
  • Tomcat如何查看tomcat的控制台输出的方法

    如何查看tomcat的控制台输出的方法

    这篇文章主要介绍了如何查看tomcat的控制台输出的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    CaiCaiNeo11932021-08-29
  • TomcatEclipse创建tomcat实现过程原理详解

    Eclipse创建tomcat实现过程原理详解

    这篇文章主要介绍了Eclipse创建tomcat实现过程原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    海绵般汲取11642021-09-16