为什么80%的码农都做不了架构师?>>>   

Tomcat三种模式

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://www.cnblogs.com/nb-blog/p/5278502.html)

官方对这三种的区别的详细说明:

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"]

配置APR模式

安装依赖库

yum install apr-devel openssl-devel

安装apr动态库

进入tomcat的bin目录
解压tomcat-native.tar.gz文件
进入tomcat-native-1.2.7-src/native目录
./configure && make && make install
动态库默认安装在/usr/local/apr/lib目录下

配置APR本地库到系统共享库搜索路径中

编辑$TOMCAT_HOME/bin/catalina.sh文件

JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

Tomcat8以下需要指定运行模式

编辑$TOMCAT_HOME/conf/server.xml文件

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

关闭SSL

从on改成off

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

转载于:https://my.oschina.net/boonya/blog/3019700

Tomcat三种模式及配置APR模式相关推荐

  1. Tomcat的BIO、NIO、APR模式对比与性能测试结果

    11.11活动当天,服务器负载过大,导致部分页面出现了不可访问的状态.那后来主管就要求调优了,下面是tomcat bio.nio.apr模式以及后来自己测试的一些性能结果. 原理方面的资料都是从网上找 ...

  2. 三种256MB SPIFLASH的高性能模式和软复位学习笔记

    三种256MB SPIFLASH的高性能模式和软复位学习笔记 WINBONE CONTINUE READ MODE The Fast Read Dual I/O The Fast Read Quad ...

  3. SpringCloud feign 的三种超时时间配置

    1.负载均衡 Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错.Feign 的负载均衡底层用的是 Ribbon,其配置如下: ribbon:ReadT ...

  4. vue在生产环境、测试环境和开发环境,三种环境下配置不同的api地址

    vue在生产环境.测试环境和开发环境,三种环境下配置不同的api地址 我们大多数在开发的时候,都会有三种环境,一个是开发环境,一个是测试环境,一个是生产环境,我们打包的时候需要根据不同的环境去加载不同 ...

  5. 三种最流行的商业模式解析:让顾客感觉占便宜,你才能赚更多钱

    商业模式是一切企业的经营根本,在所有商业模式中,盈利模式是祖师爷爷,商业模式其实就是最赚钱的模式.但是真正能够了解甚至能够运用得好的人是非,常少的,期间以傻逼者居多,破产者无数. 以下三种模式,是商业 ...

  6. 三种方式实现生产者消费者模式

    生产者消费者模式 此博文部分借鉴于: https://blog.csdn.net/u011109589/article/details/80519863 https://blog.csdn.net/w ...

  7. 一,三种基础的数据复用模式 IR,OR,WR

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.数据复用的作用 二.基本参数和卷积模型介绍 二.数据复用方式 1.IR模式 2.OR模式 3.WR模式 总结 前言 ...

  8. 三种监控平台配置及其整合(cacti nagios ganglia)

    三种软件的官方文档地址: cacti:http://docs.cacti.net/manual:087:1_installation#installation nagios:http://www.na ...

  9. linux安装-bin.rpm,Linux离线安装jdk,bin、rpm和tar.gz三种方式及配置jdk环境变量

    本文主要是为了记录安装过程,方便后续用到时可及时翻阅,如有不对之处,请各位不吝赐教. 因离线安装方法较为常用,故本文主要说明使用离线方式安装jdk的方法,在线安装方法后续补充. 第一步:下载jdk 官 ...

最新文章

  1. 驳“中国的网页设计为什么这么烂?”
  2. python文本数据处理_从 App 描述介绍文字中发掘 Python 文本数据预处理实例
  3. 与老黄的技术对聊总结
  4. php中删除数组元素的函数,php删除数组中的元素函数用法汇总
  5. boost::mpl模块实现inherit相关的测试程序
  6. 测试技巧–不编写测试
  7. asp.net core系列 48 Identity 身份模型自定义
  8. list 泛型_带你深挖Java泛型类型擦除以及类型擦除带来的问题
  9. Ubuntu添加swap分区
  10. Day10(--JSP与JSP内置对象)
  11. 威纶触摸屏与电脑连接_如何将威纶通tk6070ip触摸屏程序上传到电脑里。请大侠讲解具体步骤...
  12. 宏杉科技摆“擂台”,遍寻天下存储技术高手
  13. python为什么被称为胶水语言_为什么Python被称为“胶水语言”?
  14. GEOS库一些自己的见解和注意点
  15. ★自助饮料售卖机,C语言 编辑题
  16. 全方位剖析“清华同方”,脉络千里!!
  17. SMP_WEIBO_2016 微博用户画像 可视化(未完成)
  18. 自己写jquery表单验证
  19. [unity] unity学习——弹球游戏
  20. 网站实现扫描二维码关注微信公众号,实现自动登陆

热门文章

  1. linux正则表达式sed
  2. LINUX CP命令
  3. 50 种系统免遭黑客侵袭的方法 [2017 年版]
  4. linux系统配置之开机启动过程(centos)
  5. DLT(DeepLearningTracker)学习与代码理解 (1)
  6. 大叔手记(17):大叔2011年读过的书及2012年即将要读的书
  7. webpack 配置react脚手架(四):路由配置
  8. mysql 优化实例(百万级数据)
  9. Linux DNS (2)搭建DNS服务器
  10. 学用 ASP.Net 之 字符串 (2): string.Format