tomcat启动nio,apr详解以及配置

前言

在正文开始之前,我们先在idea工具中看看启动的信息,顺便看下启动的基本信息


在这里插入图片描述
可以看到信息有
tomcat版本
操作系统版本
java版本
tomcat 的CATALINA_BASE 和 CATALINA_HOME ,也就是tomcat 的安装版本
tomcat的jvm大小 等等基本信息
启动的时候也可以看下信息是否正确来确保你的项目启动没有问题

好了,正文开始,我们了解一下启动tomcat的日志信息

一般我们启动 startup.bat 的时候,启动成功会看到如下信息,

在图中我们可以看到,
【http-nio-8091】
【ajp-nio-8092】
这两行表示:
http 的方式是以nio 的模式来启动的
ajp 的方式是以nio 的模式来启动的

那么问题来了,http协议我们知道,ajp协议是什么??
看过tomcat的server.xml配置文件的,会了解到里面有这两个连接器

1)HTTP Connector

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

拥有这个连接器,Tomcat才能成为一个web服务器,还可以处理Servlet和jsp。

2)AJP Connector

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

AJP连接器可以通过AJP协议和另一个web容器进行交互。
到这里我们就知道,AJP 他的作用就是负责和其他的HTTP服务器建立连接
例如和apche服务器连接,有了这个协议,才可以把apche服务器和tomcat服务器给连接起来

那么 【http-nio-8091】 中的 http 和ajp 我们都了解了, 那么第二个参数nio是什么???
第二个参数代表的是tomcat的请求连接方式是什么样的。
在tomcat中连接方式一共有3种,往下看详解

tomcat有3种方式启动,分别是bio,nio,apr

什么是BIO NIO APR ?

BIO
bio是阻塞式IO操作,使用java io技术,即每一个请求都要创建一个线程来进行处理。缺点:并发量高时,线程数较多,占资源

NIO
使用java nio技术,能够通过少量的线程处理大量的请求
nio是基于java中非阻塞IO操作的API实现,比传统的i/o处理方式有更高的并发运行性能

APR
(Apache Portable Runtime/Apache可移植运行时库)
apr是从操作系统级别解决异步IO问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式

如图
1)bio的启动信息

2)nio模式的启动信息

3)apr模式的启动信息

我们需要做的是把 http 和 ajp 都改成 用apr 的方式启动

tomcat8以及之后的版本默认都是以NIO的模式启动,如果要启动apr,需要自己设置

1)windows下设置用apr启动:
windows下已经安装有apr的支持,所以直接在service.xml文件中修改配置即可
找到以下这行

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

修改成

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

这样之后,http就是以apr的模式启动了,
效果如下

但是 ajp 没有启动apr,所以我们还需要再进行下一步操作

找到以下这行

<Connector port="8092" protocol="AJP/1.3" redirectPort="8443" />

修改成

<Connector port="8092" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" />

这样之后,ajp 就是以apr的模式启动了,
效果如下

HTTP和AJP 对应的协议,可以直接用前缀+协议名字填入到server.xml
例如 org.apache.coyote.http11.Http11NioProtocol

HTTP AJP
前缀 org.apache.coyote.http11 前缀 org.apache.coyote.ajp
       
HTTP Http11Protocol Http11NioProtocol Http11AprProtocol
AJP AjpProtocol AjpNioProtocol AjpAprProtocol

以上说的是在windows下开启apr,那么linux也是可以开启的,但是,linux默认没有安装apr的依赖,
所以需要我们自己安装,具体的安装内容会在我的下一篇博客,敬请期待~

最后来自网络的总结:

Apr处理请求最快,Nio次之,Bio最慢;

Apr宽带占用最高,Bio最低;但Apr的内存占用最高,而Nio的内存占用最低

所以综合来看,Nio适用于一般需求;Apr适用于高并发需求

tomcat启动nio,apr详解以及配置的更多相关文章

  1. Tomcat启动过程原理详解 -- 非常的报错:涉及了2个web.xml等文件的加载流程

    Tomcat启动过程原理详解 发表于: Tomcat, Web Server, 旧文存档 | 作者: 谋万世全局者 标签: Tomcat,原理,启动过程,详解 基于Java的Web 应用程序是 ser ...

  2. Tomcat负载均衡原理详解及配置(Apache2.2.19+Tomcat7.0.12)

    结构图 JAVA项目一般直接用Tomcat作为Web服务器.为了增加tomcat的性能和稳定性,我们一般采用balance和session同步机制. 下图列出了我们常用也是最简单的解决方案. 说明 1 ...

  3. Tomcat启动过程原理详解

    基于Java的Web 应用程序是 servlet.JSP 页面.静态页面.类和其他资源的集合,它们可以用标准方式打包,并运行在来自多个供应商的多个容器.Web 应用程序存在于结构化层次结构的目录中,该 ...

  4. Tomcat配置(二):tomcat配置文件server.xml详解和部署简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...

  6. log4j.properties 详解与配置步骤(转)

    找的文章,供参考使用 转自 log4j.properties 详解与配置步骤 一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR ...

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

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

  8. 【转】联想笔记本进入u盘启动项操作方法详解

    win7之家小编最近可是对联想笔记本进入u盘启动项的方法很有兴趣啊,那么联想进入u盘启动到底要怎么操作呢?其实方法是有的,因为小编就是研究联想进入u盘启动出身的,下面小编就给大家带来史上最详细的联想笔 ...

  9. Java NIO 的前生今世 之四 NIO Selector 详解

    Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...

随机推荐

  1. OnCommandStateChange 不响应

    原因是我把原先的OnCommandStateChange( long nCommand, BOOL bEnable )大BOOL改成了小bool,回调不认识了.

  2. UVA10071 Back to High School Physics:题解

    题目链接:https://www.luogu.org/problemnew/show/UVA10071 题意简叙: 粒子从0速度提速到t时速度为v,求出2*t时所运动的距离 分析: 这道题是一道物理题 ...

  3. 个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数

    对于日常办公过程中,每天面对的操作离不开文件.文件夹的操作,当然可以用资源管理器.Everything之类的管理软件来管理.但涉及到批量操作时,在Excel环境或许是个更好的方式,前面很多的内容中不断 ...

  4. 题解 P2835 【刻录光盘】

    P2835 刻录光盘 来一波FLOYD最短代码qwq #include<cstdio> using namespace std; #define FOR(i) for (register ...

  5. spring全局异常抓取validation校验信息

    @ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler({Exception.class}) @Respons ...

  6. VMWare虚拟机:三台虚拟机互通且连网

    虚拟机:三台虚拟机互通且连网 目录 一.虚拟机 相关软件 虚拟机安装 Linux系统安装 1) 使用三个Linux虚拟机 多台虚拟机互通且上网 1) 多台配置注意事项 2) 虚拟机软件的配置 3) W ...

  7. Face++实习体验

    旷视Face++ 实习体验 已经在Face++呆了快20天了,自从实习,github和blog也碰的少了,我工作是做聚类(也是头一次接触机器学习,以前想都没敢想的),毕竟工作内容很多都是不熟悉的,需要 ...

  8. sqlmap续

    sqlmap续 注入语句(知道绝对路径时候可用) http://192.168.99.171/test2/sqli/example10.php?catid=3’union select 1,’< ...

  9. XSS危害——session劫持(转载)

    在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍 ...

  10. 【Android】Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT

    刚遇到了这个问题: Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT 解决方法: 修改 A ...