Tomcat Connector的三种不同的执行模式性能相差非常大,有人測试过的结果例如以下:

这三种模式的不同之处例如以下:
  • 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或以上的系统中启动默认使用这样的方式。
Linux假设安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://my.oschina.net/lsw90/blog/181161)

官方对这三种的差别的具体说明:
                  Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector 

                             BIO                         NIO                       APR 

Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol 

Tomcat Version           3.x onwards                 7.x onwards              5.5.x onwards 

Support Polling              NO                          YES                       YES 

Polling Size                 N/A                   maxConnections             maxConnections 

Read Request Headers      Blocking                  Sim Blocking                   Blocking 

Read Request Body         Blocking                  Sim Blocking                   Blocking 

Write Response            Blocking                  Sim Blocking                   Blocking 

Wait for next Request     Blocking                  Non Blocking               Non Blocking 

Max Connections        maxConnections              maxConnections             maxConnections 

Tomcat启动的时候,能够通过log看到Connector使用的是哪一种执行模式:
  • Starting ProtocolHandler ["http-bio-8080"]
  • Starting ProtocolHandler ["http-nio-8080"]
  • Starting ProtocolHandler ["http-apr-8080"]

(原创文章,转载请注明转自Clement-Xu的csdn博客)




Tomcat Connector三种执行模式(BIO, NIO, APR)的比較和优化的更多相关文章

  1. Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化

    Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下: 这三种模式的不同之处如下: BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomc ...

  2. Tomcat Connector三种运行模式

    BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomcat7或以下,在Linux系统中默认使用这种方式. NIO: 利用Java的异步IO处理,可以通过少量的线程处理大量的 ...

  3. JIT与JVM的三种执行模式:解释模式、编译模式、混合模式

    Java JIT(just in time)即时编译器是sun公司采用了hotspot虚拟机取代其开发的classic vm之后引入的一项技术,目的在于提高java程序的性能,改变人们“java比C/ ...

  4. Tomcat Connector的三种运行模式

    详情参考: http://tomcat.apache.org/tomcat-7.0-doc/apr.html http://www.365mini.com/page/tomcat-connector- ...

  5. 【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】

    Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运行模式 bio bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O ...

  6. Tomcat Connector(BIO, NIO, APR)三种运行模式(转)

    Tomcat支持三种接收请求的处理方式:BIO.NIO.APR . BIO 阻塞式I/O操作即使用的是传统 I/O操作,Tomcat7以下版本默认情况下是以BIO模式运行的,由于每个请求都要创建一个线 ...

  7. Tomcat 的三种高级运行模式

    Tomcat 的连接器有两种:HTTP和AJP AJP(Apache JServ Protocol):AJP是面向数据包的基于TCP/IP的协议,它在Apache和Tomcat的实例之间提供了一个专用 ...

  8. tomcat bio nio apr 模式性能测试

    转自:tomcat bio nio apr 模式性能测试与个人看法 11.11活动当天,服务器负载过大,导致部分页面出现了不可访问的状态.那后来主管就要求调优了,下面是tomcat bio.nio.a ...

  9. [转]Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...

随机推荐

  1. LR基础学习_脚本信息函数

    Action(){ //脚本信息函数. //lr_whoami:返回Vuser的ID,组名称,场景ID信息./*    int id,scid;    char *vuser_group;    lr ...

  2. Android网络开发之WIFI

    WIFI全称Wireless Fidelity, 又称802.11b标准.WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance( ...

  3. 【微信小程序】实现类似WEB端【返回顶部】功能

    1.原理:利用小程序自带的<scroll-view>组件,该组件的bindScroll和scroll-top方法.属性进行联合操作 2.效果图: 3.wxml: <scroll-vi ...

  4. Mint17 一些安装备忘

    1,中文输入法: sudo apt-add-repository ppa:fcitx-team/dailybuild-fcitx-master sudo apt-get update sudo apt ...

  5. HDUOJ---(4708)Rotation Lock Puzzle

    Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  6. Android JUnit 入门指南

    自动化单元测试可以做许多的事,并帮你节省时间.它也可以被用作快速检验新建工程或进行冒烟测试.始终,单元测试是作为一种有效的.系统的检验应用程序各功能执行的方式.Android SDK支持JUnit的自 ...

  7. PostgreSQL与MySQL常用命令比较[转]

    PostgreSQL与MySQL常用命令比较 原文链接: http://www.phpwell.com/?p=174 PostgreSQL MySQL 服务启动:1)#service postgres ...

  8. Java将数据库数据导入EXCEL

    一般的数据库数据怎么导入excel中呢??这让人非常疑惑,今天我找到了一个方法能够实现 须要导入一个第三方包下载地址 详细内容例如以下: 里面含有指导文档,index.html里面含有怎样读取数据库文 ...

  9. 统一日志监控系统 springboot websocket 简单版 王代军-作品

    http://git.oschina.net/redArmy/springboot-websocket-logs 目的: 统一监控 开发测试环境日志 如果需要可以拓展线上环境的日志(自己视情况而定) ...

  10. LaTeX多文件编译的方法总结

    LaTeX多文件编译的方法总结 在编写LaTeX文档的时候,由于文档的section较多,或者section的编写时间各不相同,我们可能碰到如下问题: 1.由于想分开编写各个section 2.pre ...