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

bio

bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。
默认的模式,性能最差,没有经过任何优化处理和支持。

nio

nio(non-blocking I/O),Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能。
要让Tomcat以nio模式来运行,修改配置文件:tomcat/conf/server.xml

vim tomcat/conf/server.xml
修改以下内容:

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

修改protocol的值为org.apache.coyote.http11.Http11NioProtocol

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />

重启Tomcat后生效。

apr

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

要让Tomcat以apr模式来运行,必须安装apr和native

  • 安装apr:
    yum -y install apr apr-devel

  • 安装native:

    cd /usr/local/tomcat/bin/
    tar xzfv tomcat-native.tar.gz
    cd tomcat-native-1.1.33-src/jni/native/
    ./configure --with-apr=/usr/bin/apr-1-config
    make && make install
     
  • 【需要安装gcc: yum -y install gcc】

    安装完成之出现如下提示信息:

  • 整合Tomcat apr

    • 设置环境变量
      方法一:在/bin/catalina.sh中增加1行:
      (在echo “Using CATALINA_BASE: $CATALINA_BASE”的上一行添加)
      CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

      方法二:在/etc/profile中加入:
      export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib
      使配置生效:
      source /etc/profile

    • 修改配置文件:tomcat/conf/server.xml

      vim tomcat/conf/server.xml
      修改以下内容:

      <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
    • 修改protocol的值为org.apache.coyote.http11.Http11NioProtocol

      <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
      connectionTimeout="20000"
      redirectPort="8443" />
  • 重启Tomcat,启动日志出现以下内容证明此时以APR模式启动

查看Tomcat Connector运行模式

  • 方法一:在http://x.x.x.x:8080/manager/status 中查看服务器状态

  • 方法二:根据Tomcat启动日志信息判断

    • bio

       
      INFO: Initializing ProtocolHandler ["http-bio-8080"]
      Aug 04, 2015 10:20:35 PM org.apache.coyote.AbstractProtocol init
    • nio

       
      INFO: Initializing ProtocolHandler ["http-nio-8080"]
      Aug 04, 2015 10:27:58 PM org.apache.coyote.AbstractProtocol init

apr

INFO: Initializing ProtocolHandler ["http-apr-8080"]
Aug 04, 2015 10:33:45 PM org.apache.coyote.AbstractProtocol init

测试参考:
   tomcat bio nio apr 模式性能测试

【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】的更多相关文章

  1. Tomcat Connector的三种运行模式

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

  2. PHP语言学习之php-fpm 三种运行模式

    本文主要向大家介绍了PHP语言学习之php-fpm 三种运行模式,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. php-fpm配置 配置文件:php-fpm.conf 开启慢日志功能的 ...

  3. ubuntu上Hadoop三种运行模式的部署

    Hadoop集群支持三种运行模式:单机模式.伪分布式模式,全分布式模式,下面介绍下在Ubuntu下的部署 (1)单机模式 默认情况下,Hadoop被配置成一个以非分布式模式运行的独立JAVA进程,适合 ...

  4. hadoop记录-[Flink]Flink三种运行模式安装部署以及实现WordCount(转载)

    [Flink]Flink三种运行模式安装部署以及实现WordCount 前言 Flink三种运行方式:Local.Standalone.On Yarn.成功部署后分别用Scala和Java实现word ...

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

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

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

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

  7. tomcat使用实践三种运行模式之apr

    tomcat有三种运行模式 nio,bio,apr bio是阻塞式IO操作,使用的是传统的java i/o处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景 nio ...

  8. php-fpm 三种运行模式

    php-fpm配置 配置文件:php-fpm.conf 开启慢日志功能的: slowlog = /usr/local/var/log/php-fpm.log.slowrequest_slowlog_t ...

  9. python编程(python开发的三种运行模式)【转】

    转自:http://blog.csdn.net/feixiaoxing/article/details/53980886 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 单循环 ...

随机推荐

  1. 一个简单的jsp+servlet登录界面的总结

    这个登录界面我是用eclipse+tomcat7来实现的(网上比较多都是用myeclipse来做的) 1.首先是关于servlet部署的问题 首先你的servlet类要写在WEB-INF的Class文 ...

  2. javaweb-JSP action中附件下载的写法

     附件下载(包括图片,exl,word)在前台必须给出一个iframe 或者类似于window的窗口,另外,Java文件下载不能通过ajax进行请求,必须添加src属性首选,前台的链接拼接html如下 ...

  3. JSR-303原生支持的限制

    @Null: 限制只能为null@NotNull: 限制必须不为null@AssertFalse: 限制必须为false@AssertTrue: 限制必须为true@DecimalMax(value) ...

  4. -webkit/IE/Firefox的一些样式

    仅限于-webkit的样式特效:-webkit-overflow-scrolling:touch;滚动时回弹效果:如果出现偶尔卡住不动的情况,那么在使用该属性的元素上不设置定位或者手动设置定位为sta ...

  5. Log4net快速搭建

    nuget安装log4net 2018.12.10当前版本为2.0.8 找到所在项目的[Properties->AssemblyInfo] 在底部加上 [assembly: log4net.Co ...

  6. 看到了一篇不错的tensorflow文章

    http://dataunion.org/28906.html 本文作者 Steven Dufresne,总结了新手学 TensorFlow 需要的核心知识点和实操内容,旨在鼓励更多人借 Tensor ...

  7. Zed Shaw:程序员的常见健康问题

    Zed Shaw:程序员的常见健康问题 原文作者Zed Shaws是一位作家.软件开发人员.音乐人(下文中提到吉他手),于2010年发布<Learn Python The Hard Way> ...

  8. webstorm快捷键大全-webstorm常用快捷键

    默认配置下的常用快捷键,提高代码编写效率,离不开快捷键的使用,Webstorm拥有丰富的代码快速编辑功能,你可以自由配置功能快捷键. Webstorm预置了其他编辑器的快捷键配置,可以点击 查找/代替 ...

  9. 进程的互斥运行:CreateMutex函数实现只运行一个程序实例

    HANDLE hMutex=CreateMutex(NULL,TRUE,"HDZBUkeyDoctorTool"); if(hMutex) { if(ERROR_ALREADY_E ...

  10. WebStorm改变字体大小以及更换背景颜色

    参考文章:https://blog.csdn.net/weixin_42676530/article/details/82961279