`
gaojingsong
  • 浏览: 1154560 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Tomcat三种运行模式】

阅读更多

Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改Tomcat Connector的运行模式来提高Tomcat的运行性能呢?



 

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

BIO:

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

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

 

NIO:

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

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

Tomcat7必须修改Connector配置来启动:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 

         connectionTimeout="20000" redirectPort="8443"/> 

APR:

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

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

 

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

Starting ProtocolHandler ["http-bio-8080"]

Starting ProtocolHandler ["http-nio-8080"]

Starting ProtocolHandler ["http-apr-8080"]

 

 

 

Tomcat 的连接器有两种:HTTP和AJP

AJP(Apache JServ Protocol):AJP是面向数据包的基于TCP/IP的协议,它在Apache和Tomcat的实例之间提供了一个专用的通信信道

主要有以下特征:

 1) 在快速网络有着较好的性能表现,支持数据压缩传输;

 2) 支持SSL,加密及客户端证书;

 3) 支持Tomcat实例集群;

 4) 支持在apache和tomcat之间的连接的重用;

 

Tomcat Connector(连接器)有三种运行模式:bio nio apr

一、bio(blocking I/O)

即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。(Tomcat7 或以下,在 Linux 系统中默认使用这种方式)

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

server.xml 文件中的配置

端口号自己设定,只要不占用就行,此处我的8080 已占用所以使用9090

<Connector port="9090" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

 

 

二、nio(new I/O)

是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行只需要在Tomcat安装目录/conf/server.xml 中将对应的中protocol的属性值改为 org.apache.coyote.http11.Http11NioProtocol即可

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

注意: Tomcat8 以上版本在 Linux 系统中,默认使用的就是NIO模式,不需要额外修改 ,Tomcat7必须修改Connector配置来启动

<Connector port="9090" protocol="org.apache.coyote.http11.Http11NioProtocol"

               connectionTimeout="20000"

               redirectPort="8443" />

 



 

三、apr(Apache Portable Runtime/Apache可移植运行时) ( 安装配置过程相对复杂)

Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。从操作系统级别来解决异步的IO问题

APR是使用原生C语言编写的非堵塞I/O,利用了操作系统的网络连接功能,速度很快。 

但是需先安装apr和native,若直接启动就支持apr,能大幅度提升性能,不亚于魔兽开局爆高科技兵种,威力强大

Tomcat apr的配置需要以下三个组件的支持:

    APR library

    JNI wrappers for APR used by Tomcat(libtcnative)[简单地说,就是自带的tomcat-native]

    OpenSSL libraries

 

与配置nio运行模式一样,也需要将对应Connector的protocol属性值改为 org.apache.coyote.http11.Http11AprProtocol

server.xml 文件中的配置

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"

   URIEncoding="UTF-8"

   maxConnections="10000"

   maxThreads="2000"

   acceptCount="2000"

   minSpareThreads="100"

   compression="on"

   compressionMinSize="2048"

   compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

   enableLookups="false"

   disableUploadTimeout="true"

   connectionTimeout="20000"

   redirectPort="8443" />

  • 大小: 15.7 KB
  • 大小: 30 KB
0
0
分享到:
评论

相关推荐

    浅谈Tomcat三种运行模式

    主要介绍了浅谈Tomcat三种运行模式,小编冒昧将两篇文章略微整合了一下,有不足的地方,欢迎指出。需要的朋友可以参考。

    tomcat的运行模式

    描述tomcat的三种运行模式,以及其相应的配置方法

    Tomcat开启APR运行模式1

    } 7.手动安装依赖库(1)安装aprtar zxvf apr-1.4.5.tar cd apr-1.4.5 ./configure --prefix=/usr

    【高并发】高并发环境下如何优化Tomcat性能?看完我懂了!

    Tomcat运行模式 Tomcat的运行模式有3种。 1.bio模式 默认的模式,性能非常低下,没有经过任何优化处理和支持。 2.nio模式 利用java的异步io护理技术,noblocking IO技术。要想运行在该模式下,则直接修改server.xml里的...

    Tomcat面试专题.pdf

    2、tomcat 有哪几种 Connector 运行模式(优化)? 3、Tomcat 有几种部署方式? 4、tomcat 容器是如何创建 servlet 类实例?用到了什么原理? 5.tomcat 如何优化? 6.内存调优 7.垃圾回收策略调优 8.共享 session 处理...

    Tomcat-7.0.73包

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    Tomcat 7 API文档

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    apache-tomcat-7.0.104-windows-x64

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    tomcat安装包jakarta-tomcat-5.0.18.exe

    实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。  这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上...

    tomcat中间件

    实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    apache-tomcat-8.5.40

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    apache-tomcat-8.0.48

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    Tomcat 安装与配置.pdf

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    apache-tomcat-7.0.94

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    apache-tomcat-7.0.81

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    网上购物系统 带源代码 部署后即可运行 带有Tomcat服务器 基于SSH设计模式

    网上购物系统 带源代码 部署后即可运行 带有Tomcat服务器 基于SSH设计模式

    tomcat+源代码

    Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多...Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

    tomcat-8.5.57.exe

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    apache-tomcat-7.0.103.exe

    实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP ...

    IDEA Maven项目使用debug模式运行Tomcat的详细教程

    主要介绍了IDEA Maven项目使用debug模式运行Tomcat的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics