-
2019-07-05 11:27:43
一、导读
Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改Tomcat Connector的运行模式来提高Tomcat的运行性能呢?
下面,我们先大致了解Tomcat Connector的三种运行模式。二、模式介绍
bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。
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即可:
此时,我们就可以在Tomcat Manager中看到当前服务器状态页面的HTTP协议的Connector运行模式已经从http-bio-8080变成了http-nio-8080。apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。如果我们的Tomcat不是在apr模式下运行,在启动Tomcat的时候,我们可以在日志信息中看到类似如下信息:
2013-8-6 16:17:49 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: xxx/xxx(这里是路径信息)
Tomcat apr运行模式的配置是三种运行模式之中相对比较麻烦的一种。据官方文档所述,Tomcat apr需要以下三个组件的支持:APR library[APR库]
JNI wrappers for APR used by Tomcat (libtcnative)[简单地说,如果是在Windows操作系统上,就是一个名为tcnative-1.dll的动态链接库文件]
OpenSSL libraries[OpenSSL库]
此外,与配置nio运行模式一样,也需要将对应的Connector节点的protocol属性值改为org.apache.coyote.http11.Http11AprProtocol。 不过,上述繁琐的操作都是Tomcat 7.0.30之前的版本才需要这样配置,从Tomcat 7.0.30版本开始,Tomcat已经自带了tcnative-1.dll等文件,并且默认就是在Tomcat apr模式下运行,因此我们只需要下载最新版本的Tomcat直接使用即可。此外,即使不使用Tomcat Manager,我们也可以区分出Tomcat当前的运行模式。如果以不同的Connector模式启动,在Tomcat的启动日志信息中一般会包含类似如下的不同内容,我们只需要根据这些信息即可判断出当前Tomcat的运行模式:
bio
信息: Starting ProtocolHandler [“http-bio-8080”] 2013-8-6 16:17:50 org.apache.coyote.AbstractProtocol startnio
信息: Starting ProtocolHandler [“http-nio-8080”] 2013-8-6 16:59:53 org.apache.coyote.AbstractProtocol startapr
信息: Starting ProtocolHandler [“http-apr-8080”] 2013-8-6 17:03:07 org.apache.coyote.AbstractProtocol startTomcat 6.x版本从6.0.32开始就默认支持apr。
Tomcat 7.x版本从7.0.30开始就默认支持apr。
因此,如果读者使用的Tomcat版本比较陈旧的话,强烈建议升级到最新的稳定版本。更多相关内容 -
浅谈Tomcat三种运行模式
2020-08-29 03:30:00主要介绍了浅谈Tomcat三种运行模式,小编冒昧将两篇文章略微整合了一下,有不足的地方,欢迎指出。需要的朋友可以参考。 -
10.3Tomcat三种工作模式介绍.txt
2019-11-24 11:54:4210.3Tomcat三种工作模式介绍.txt -
tomcat的三种工作模式
2019-06-12 11:28:08Tomcat 的连接器有两种:HTTP和AJP AJP(Apache JServ Protocol):AJP是面向数据包的基于TCP/IP的协议,它在Apache和Tomcat的实例之间提供了一个专用的通信信道 主要有以下特征: 1) 在快速网络有着较好的性能...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" />
- 1
- 2
- 3
- 4
-
Tomcat Manager查看到的
二、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" />
- 1
- 2
- 3
-
server.xml 文件中的修改
Tomcat Manager查看到的
三、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
- 1
- 2
- 3
- 4
- 5
-
与配置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" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
配置之前首先
安装APR以及与 Tomcat-native 整合(之前先安装依赖)
APR下载:http://apr.apache.org/download.cgi
- 1
-
①安装apr
-
1 在目录/opt/apr/apr-1.5.2 下执行
-
./configure --prefix=/usr/local/apr
-
2 make
-
3 make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
② 安装 apr-iconv
-
1 /opt/apr/apr-iconv-1.2.1
-
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
-
2 make
-
3 make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
③ 安装apr-util
-
1 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
-
2 make
-
3 make install
- 1
- 2
- 3
- 4
- 5
- 6
-
④安装tomcat-native
-
2 ./configure --with-apr=/usr/local/apr
-
make
-
make install
-
⑤ 配置APR的环境变量
-
vim /opt/tomcat7/bin/catalina.sh
-
编辑添加如下内容
-
以下内容粘在开头(表示一启动就执行)
-
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_LIBRARY_PATH
-
⑥重启Tomcat 查看日志
⑦ 粘贴便签内配置
-
<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" />
-
Tomcat Manager查看到的
* 待解决问题 *
Tomcat在server.xml 文件中配置 APR 协议出现以下
出现问题待解决
-
二月 08, 2017 4:53:21 下午 org.apache.catalina.core.StandardService initInternal
-
严重: Failed to initialize connector [Connector[HTTP/1.1-9000]]
-
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-9000]]
-
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
-
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
-
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
-
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:840)
-
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
-
at org.apache.catalina.startup.Catalina.load(Catalina.java:642)
-
at org.apache.catalina.startup.Catalina.load(Catalina.java:667)
-
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
-
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-
at java.lang.reflect.Method.invoke(Method.java:606)
-
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
-
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
-
Caused by: org.apache.catalina.LifecycleException: The configured protocol [org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library which is not available
-
at org.apache.catalina.connector.Connector.initInternal(Connector.java:972)
-
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
-
... 12 more
-
-
tomcat三种运行模式
2019-02-19 11:08:49不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改Tomcat Connector的运行模式来提高Tomcat的运行性能呢? 下面,我们...Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改Tomcat Connector的运行模式来提高Tomcat的运行性能呢?
下面,我们先大致了解Tomcat Connector的三种运行模式。
bio
bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即
java.io
包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。【点击这里可以查看Tomcat Manager用户配置的相关信息】nio
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
文件中将如下配置:<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 Manager中看到当前服务器状态页面的HTTP协议的Connector运行模式已经从
http-bio-8080
变成了http-nio-8080
。apr
apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。如果我们的Tomcat不是在apr模式下运行,在启动Tomcat的时候,我们可以在日志信息中看到类似如下信息:
2013-8-6 16:17:49 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: xxx/xxx(这里是路径信息)
Tomcat apr运行模式的配置是三种运行模式之中相对比较麻烦的一种。据官方文档所述,Tomcat apr需要以下三个组件的支持:
- APR library[APR库]
- JNI wrappers for APR used by Tomcat (libtcnative)[简单地说,如果是在Windows操作系统上,就是一个名为tcnative-1.dll的动态链接库文件]
- OpenSSL libraries[OpenSSL库]
此外,与配置nio运行模式一样,也需要将对应的
Connector
节点的protocol
属性值改为org.apache.coyote.http11.Http11AprProtocol
。 不过,上述繁琐的操作都是Tomcat 7.0.30之前的版本才需要这样配置,从Tomcat 7.0.30版本开始,Tomcat已经自带了tcnative-1.dll
等文件,并且默认就是在Tomcat apr模式下运行,因此我们只需要下载最新版本的Tomcat直接使用即可。此外,即使不使用Tomcat Manager,我们也可以区分出Tomcat当前的运行模式。如果以不同的Connector模式启动,在Tomcat的启动日志信息中一般会包含类似如下的不同内容,我们只需要根据这些信息即可判断出当前Tomcat的运行模式:
bio
信息: Starting ProtocolHandler ["http-bio-8080"] 2013-8-6 16:17:50 org.apache.coyote.AbstractProtocol start
nio
信息: Starting ProtocolHandler ["http-nio-8080"] 2013-8-6 16:59:53 org.apache.coyote.AbstractProtocol start
apr
信息: Starting ProtocolHandler ["http-apr-8080"] 2013-8-6 17:03:07 org.apache.coyote.AbstractProtocol start
Tomcat 6.x版本从6.0.32开始就默认支持apr。 Tomcat 7.x版本从7.0.30开始就默认支持apr。 因此,如果读者使用的Tomcat版本比较陈旧的话,强烈建议升级到最新的稳定版本。
-
Tomcat的三种运行模式
2018-09-09 11:00:00Tomcat支持三种接收请求的处理方式:BIO,NIO,APRBIO模式:阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即:java.io包...Tomcat支持三种接收请求的处理方式:
BIO
,NIO
,APR
BIO模式: 阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即:java.io包及其子包);Tomcat 7以下版本默认情况下是以BIO模式运行的,由于每个请求的都要创建一个线程来处理,因此 线程的开销较大,不能处理高兵的场景,在三种模式中性能也最低效;启动Tomcat看日志如下表示为BIO模式:
NIO模式: 是Java SE 1.4以后续版本提供的一种新的I/O操作方式(即:java.nio包及其子包);是一个基于
缓存区
、并提供非阻塞I/O操作的Java API,它拥有比传统的I/O操作(BIO)更好的并发运行性能;APR模式: 简单理解就是,从操作系统级别解决异步IO问题,大幅度的提高服务器的处理合相应性能,也是Tomcat运行高并发应用的首选模式;
官方对三种运行模式的区别说明如下:
参数 Java Blocking Connector (BIO模式) Java Nio Blocking Connector(NIO模式) APR/native Connector(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 特征
模式 默认运行版本 处理方式 BIO运行模式 Tomcat7或以下版本 一个线程处理一个请求;缺点:并发量高是,线程数较多,浪费资源 NIO运行模式 Tomcat8版本 利用Java的异步IO处理,可通过少量的线程处理大量请求; APR运行模式 Tomcat7 或 8 在win7或以上系统中默认使用 从操作系统层面解决IO阻塞问题;
Tomcat启动时,可以通过catalina.out
启动日志查看使用的是哪种运行模式:Starting ProtocolHandler ["http-bio-8080"] ## BIO模式 Starting ProtocolHandler ["http-nio-8080"] ## NIO模式 Starting ProtocolHandler ["http-apr-8080"] ## APR模式
Tomcat BIO模式
自Tomcat 8.5 版本开始,Tomcat就移除了对BIO的支持; BIO即阻塞式I/O,是java提供的最基本的I/O方式。在网络通信(此处主要讨论TCP/IP协议)中,需要通过Socket在客户端与服务端建立双向链接以实现通信,主要步骤如下:
(1) 服务端监听某个端口是否有链接请求
(2) 客户端想服务端发出链接请求
(3) 服务端想客户端返回Accept(接受)消息,此时链接成功
(4) 客户端和服务端通过send()、write()等方法与对方通信
(5) 关闭链接
Tomcat 7以下版本默认情况下是以BIO模式运行的,由于每个请求的都要创建一个线程来处理,因此 线程的开销较大,不能处理高并发的场景,在三种模式中性能也最低效;启动Tomcat看日志如下表示为BIO模式:
Tomcat NIO模式
重要提示:使用这些功能需要使用APR或NIO HTTP连接器。传统的java.io HTTP连接器和AJP连接器不支持它们
传统的BIO方式是基于流进行读写的,而且是阻塞的,整体性能比较差; 为了提供I/O性能,JDK自1.4版本引入了NIO模式,它弥补了原来BIO方式的不足,在标准的java代码中提供了 高速、面向块的I/O。 通过定义包含数据的类以及以块的形式处理数据,NIO可以在不编写本地代码的情况下利用底层优化,这是BIO所无法做到的;
NIO模式 是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行比较简单,只需要在Tomcat安装目录/conf/server.xml文件中将如下配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改成:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
注意: Tomcat8以上版本,默认使用的就是NIO模式;不需要额外修改
提示: 更改模式时,如果只修改上述文件内容,则只有
["http-nio-8180"]
被修改为NIO模式,若想上图中2处都修改为NIO模式
则还需要修改如下内容:<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
改为:
<Connector port="8109" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" />
以下属性是特定于NIO连接器 NIO连接器官方详细说明
Tomcat NIO2模式
NIO2是JDK7新增的文件及网络I/O特性,它继承自NIO 同时添加了众多特性及功能改进,其中最重要的即是对异步I/O(AIO)的支持;
1 . 通道 在AIO中,通道必须实现接口
java.nio.chanels.AsynchronousChannel(继承自java.nio.channels.Channel)
JDK7提供了3个通道实现类:java.nio.channels.AsynchronousFileChannel用于文件I/O
,java.nio.channels.AsynchronousServerSocketChannel
和java.nio.channels.AsynchronousSocketChannel用于网络I/O
2 . 缓冲区 AIO仍通过操作缓冲区完成数据的读写操作,这里不再阐述。
3 . Future 和 CompletionHandler AIO操作存在两种操作方式: Future 和 CompletionHandler ; 我们可以使用其中任何一种来完成I/O操作 首先, AIO使用了java并发包的API,无论接收Socket请求还是读写操作,均可以返回一个java.util.concurrent.Future对象来表示I/O处于等待状态; 通过Future的方法,我们可以检测操作是否完成(isDone)、等待完成并取得操作结果(get)等。 当接收请求(accept)结束时,Future.get返回值为AsynchronousSocketChannel; 读写操作时(read/write),Future.get返回值为读写操作结果。
4 . 异步通道组 AIO新引入了异步通道组(Asynchronous Channel Group)的概念,每个异步通道均属于一个指定的异步通道组,同一个通道组内的通道共享一个线程池; 线程池内的线程接收指令来执行I/O事件并将结果分发到CompletionHandler。 异步通道组包括线程池以及所有通道工作线程共享的资源。通道生命周期受所属通道组影响,当通道组关闭后,通道也随之关闭;
Tomcat APR模式
APR模式:简单来说,就是从操作系统级别解决异步IP问题,大幅度的提高服务器的处理和响应性能,也是Tomcat运行高并发应用的首选模式;
启动这种模式需要安装一些依赖库,下面进行详细说明:
基于Apache Portable Runtime(APR)的Tomcat本地库
安装要求:
APR 1.2+开发头文件(libapr1-dev包)
OpenSSL 0.9.7+开发头文件(libssl-dev包)
来自Java兼容JDK 1.4+的JNI头文件
GNU开发环境(gcc,make)
apr的安装
下载apr包地址(http://apache.fayea.com/apr/)
## 下载解压 wget http://apache.fayea.com/apr/apr-1.6.3.tar.gz wget http://apache.fayea.com/apr/apr-util-1.6.1.tar.gz tar fxz apr-1.6.3.tar.gz tar fxz apr-util-1.6.1.tar.gz ## 安装 cd apr-1.6.3/ ./configure --prefix=/usr/local/apr make && make install cd apr-util-1.6.1/ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install
安装tomcat-native
cd /usr/local/tomcat/bin tar -zxvf tomcat-native.tar.gz cd tomcat-native-1.1.22-src/jni/native ./configure --with-apr=/usr/local/apr make && make install
设置apr环境变量
# vim /etc/profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib # 执行 source /etc/profile 立即生效
修改Tomcat配置文件
修改http协议
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改成:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" />
修改AJP协议
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
改为:
<Connector port="8109" protocol="org.apache.coyote.http11.Http11AprProtocol" redirectPort="8443" />
总结
对于每种协议,Tomcat都提供了对应的I/O方式的实现,而且Tomcat官方还提供了在每种协议下每种I/O实现方案的差异; HTTP协议下的处理方式如下表:
NIO NIO2 APR 引用版本 ≥6.0 ≥8.0 ≥5.5 轮询支持 是 是 是 轮询队列大小 maxConnections maxConnections maxConnections 读请求头 非阻塞 非阻塞 非阻塞 读请求体 阻塞 阻塞 阻塞 写响应 阻塞 阻塞 阻塞 等待新请求 非阻塞 非阻塞 非阻塞 SSL支持 Java SSL/Open SSL Java SSL/Open SSL Open SSL SSL握手 非阻塞 非阻塞 阻塞 最大链接数 maxConnections maxConnections maxConnections -
解决tomcat在Debug模式下无法启动问题
2020-09-30 04:28:34主要介绍了解决tomcat在Debug模式下无法启动问题,运行环境在eclipse,JDK1.6,tomcat6.0上,具体问题解决方法大家参考下本 -
Tomcat系统架构与设计模式,第1部分:工作原理
2021-02-27 02:34:55简介:这个分为两个部分的系列文章将研究ApacheTomcat的系统架构以及其运用的很多经典设计模式。本文是第1部分,将主要从Tomcat如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析... -
Tomcat的三种模式及并发优化
2015-01-25 18:31:45Tomcat的三种模式及并发优化Tomcat的三种模式及并发优化 -
debug模式启动tomcat
2017-08-28 17:03:06放到tomcat的bin下启动,端口号8013 -
详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析
2019-07-15 16:05:51Tomcat8.0起已经默认nio模式,不需要做修改,BIO模式也已经抛弃了,今天主要介绍下tomcat的三种运行模式:BIO、NIO、ARP。 简述及配置运行模式 1、bio:没经过任何优化和处理,几百并发性能极低下。 配置server.xml ... -
IDEA Maven项目使用debug模式运行Tomcat的详细教程
2020-09-29 19:13:13主要介绍了IDEA Maven项目使用debug模式运行Tomcat的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 -
Tomcat三种运行模式(BIO, NIO, APR)
2017-07-10 15:23:37Tomcat三种运行模式(BIO, NIO, APR)**Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用 的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector (Tomcat连接器)有bio、nio、apr三种运行... -
Tomcat的三种模式区别及配置
2017-05-22 14:19:34Tomcat的运行模式有3种,即BIO、NIO和APR。 BIO 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。 NIO 利用Java的异步IO处理,... -
vue-cli history模式实现tomcat部署报404的解决方式
2020-10-16 10:54:05主要介绍了vue-cli history模式实现tomcat部署报404的解决方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
从连接器组件看Tomcat的线程模型——BIO模式(推荐)
2020-09-29 18:45:56主要介绍了从连接器组件看Tomcat的线程模型——BIO模式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 -
Tomcat Connector的三种运行模式
2016-12-02 20:17:37Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式。BIObio(blocking I/O)是指阻塞式I/O操作,Tomcat在默认情况下就是以bio模式运行的。这可以从守护线程的信息看出来。 关于”阻塞式”的理解,我们回忆... -
Tomcat 系统架构与设计模式-来自IBM
2019-01-17 10:46:00本文以 Tomcat 5 为基础,也兼顾最新的 Tomcat 6 和 Tomcat 4。Tomcat 的基本设计思路和架构是具有一定连续性的。 Tomcat 总体结构 Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块... -
tomcat 三种连接模式
2014-05-26 23:19:25tomcat 三种模式: -
tomcat的运行模式
2015-09-17 11:13:26描述tomcat的三种运行模式,以及其相应的配置方法 -
Tomcat 系统架构与设计模式
2014-09-16 11:43:31Tomcat 系统架构与设计模式,第 1 部分 工作原理 -
Tomcat部署Vue router History 模式
2022-01-28 13:37:31部署有两种方式: 访问地址为IP+端口,如 http://192.168.1.xx:8080,此时router形式为 http://192.168.1.xx:8080/user 访问地址为IP+端口+项目名,如 http://192.168.1.xx:8080/app,此时router形式为 ... -
Tomcat面试专题.pdf
2021-08-13 09:54:071、Tomcat 的缺省端口是多少,怎么修改? 2、tomcat 有哪几种 Connector 运行模式(优化)? 3、Tomcat 有几种部署方式? 4、tomcat 容器是如何创建 servlet 类实例?用到了什么原理?...14.Tomcat 工作模式? -
Tomcat的开发模式和生产模式
2018-05-19 10:35:26tomcat的开发模式和生产模式的设定是通过conf文件夹下面的web.xml文件来配置的。如下图所示。development参数为true时,tomcat为开发模式,这也是tomcat默认的模式,development参数为false时,tomcat为生产模式。在...