`
gaojingsong
  • 浏览: 1210393 次
  • 性别: 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服务器有三种运行模式:bio、nio和apr。每种模式都有其特点和优缺点,本文将对这三种模式进行详细的介绍。 bio模式 bio模式是Tomcat服务器的传统运行模式,也是Tomcat 7以下版本的...

    tomcat的运行模式

    在本文中,我们将详细介绍Tomcat的三种主要运行模式:BIO(Blocking I/O)、NIO(Non-blocking I/O)和 APR(Apache Portable Runtime),并探讨它们的配置方法。 #### 1. BIO (Blocking I/O) BIO 模式是最传统的I...

    Tomcat开启APR运行模式1

    【Tomcat开启APR运行模式】是针对Apache Tomcat服务器的一种优化策略,旨在提升其并发性能。APR(Apache Portable Runtime)是Apache HTTP服务器项目的一部分,它提供了一个跨平台的底层接口,允许Tomcat更好地利用...

    10.3Tomcat三种工作模式介绍.txt

    根据提供的文件信息,本文将详细介绍Tomcat服务器的三种工作模式:BIO(Blocking I/O)、NIO(Non-blocking I/O)以及AIO(Asynchronous I/O),并简要提及APR(Apache Portable Runtime)的工作原理及其与Tomcat的...

    通过服务运行tomcat

    具体来说,可以通过修改`MODE`参数来指定服务的运行模式。 - 此外,还可以通过修改`JAVA_OPTS`等环境变量来调整服务的Java虚拟机参数,例如增加JVM的最大堆内存等。 4. **创建系统服务** - 使用`sc`命令创建...

    Eclipse运行配置tomcat

    #### 三、配置Tomcat服务器 **1. 配置运行的服务器** - 打开Eclipse IDE,通过菜单路径 `Window &gt; Preferences &gt; Server &gt; Server Runtime Environments` 进入服务器运行时环境配置界面。 - 点击右下角的“Add”...

    Tomcat_系统架构与模式设计分析.doc

    Tomcat,作为一款广泛应用的Java Servlet容器,其系统架构和模式设计对于理解其高效稳定运行至关重要。本文将深入探讨Tomcat的核心组件、结构以及关键设计模式。 首先,Tomcat的总体结构可概括为四个主要组件:...

    Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    本文将详细介绍Apache HTTP Server与Tomcat的三种连接方式:独立模式、代理模式和集成模式。 一、独立模式 在独立模式下,Apache和Tomcat作为两个独立的服务器运行。Apache主要负责处理静态内容,如HTML、CSS、...

    tomcat做服务器在windows下开机自动运行

    本文将详细解析如何实现Tomcat服务器在Windows操作系统下开机自动运行,确保服务的高可用性和减少人工干预。 ### 知识点一:环境变量配置 在Windows系统中,为了使Tomcat能够正常运行,首先需要正确配置环境变量。...

    apache + tomcat 负载均衡worker模式初探

    当面对高并发访问时,为了提升系统性能和可用性,我们可以采用负载均衡策略,其中"worker模式"是Apache mod_proxy模块的一种配置方式,用于实现对后端Tomcat服务器的负载均衡。 Apache的mod_proxy模块允许我们配置...

    Tomcat6源代码学习(运行源代码及调试)

    3. 使用断点:在IDE中设置源代码的断点,通过启动调试模式运行Tomcat,当执行到断点时,可以查看变量状态,单步执行,跟踪调用栈。 4. 跟踪Servlet生命周期:Tomcat通过Servlet容器管理Servlet,了解Servlet的init、...

    Tomcat的结构和运行机制

    ### Tomcat的结构和运行机制 #### 一、Tomcat的大结构 Tomcat是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。其结构设计非常灵活,支持多种配置方式来满足不同应用场景的需求。 ##### 1. ...

    tomcat8和tomcat7

    3. **NIO连接器优化**:非阻塞I/O模式提高了并发处理能力,尤其适合高并发场景。 4. **更好的错误处理**:提供了自定义错误页面和更详细的错误信息,便于调试。 5. **安全增强**:支持JAAS集成,增强了安全管理,如...

    Tomcat_系统架构与设计模式

    #### 三、Tomcat总体结构 Tomcat的总体结构设计得非常模块化,这使得开发者能够更容易地理解和维护系统。其核心组件包括`Connector`和`Container`,这两者构成了Tomcat的基础架构。 **1. Connector组件** - **功能...

    把gwt放到tomcat运行

    标题“把gwt放到tomcat运行”涉及到的是Google Web Toolkit (GWT)的部署和运行方式,这是一个用于创建高效、跨浏览器的JavaScript应用程序的Java框架。在这个过程中,我们将讨论如何将一个GWT项目配置到Apache ...

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

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

    监控tomcat运行的war.zip

    【监控Tomcat运行的WAR.zip】是一个专门为监测Tomcat服务器运行状态而设计的应用程序,它提供了深入了解Tomcat内部运行情况的工具。这个压缩包包含了所有必要的文件,包括一个WAR文件,该文件是Web应用程序的打包...

    Tomcat面试题 14道.pdf

    本文将对 Tomcat 面试题进行解析,涵盖 Tomcat 的基础知识、配置文件、Connector 运行模式、部署方式、Servlet 实例创建原理等多个方面。 一、Tomcat 的基础知识 Tomcat 是一个基于 Java 语言的开源 Web 服务器,...

    Tomcat7性能优化

    ##### 3.3 Tomcat运行模式的选择 Tomcat支持三种运行模式:BIO、NIO 和 APR,每种模式都有其特点和适用场景: - **BIO (Blocking I/O)**:这是Tomcat默认的模式,每个连接都会占用一个独立的线程来处理请求,适用...

Global site tag (gtag.js) - Google Analytics