tomcat 优化--APR协议

Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最经常使用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat链接器)有bionioapr三种运行模式,那么这三种运行模式有什么区别呢,咱们又如何修改Tomcat Connector的运行模式来提升Tomcat的运行性能呢?java

 

下面,咱们先大体了解Tomcat Connector的三种运行模式。python

 

BIO

bio(blocking I/O),顾名思义,即阻塞式I/O操做,表示Tomcat使用的是传统的Java I/O操做(即java.io包及其子包)。Tomcat在默认状况下,就是以bio模式运行的。遗憾的是,就通常而言,bio模式是三种运行模式中性能最低的一种。咱们能够经过Tomcat Manager来查看服务器的当前状态。linux

 

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文件中将以下配置:apache

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

中的protocol属性值改成org.apache.coyote.http11.Http11NioProtocol便可:json

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

此时,咱们就能够在Tomcat Manager中看到当前服务器状态页面的HTTP协议的Connector运行模式已经从http-bio-8080变成了http-nio-8080ubuntu

 

APR

apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你能够简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态连接库来处理文件读取或网络传输操做,从而大大地提升Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。若是咱们的Tomcat不是在apr模式下运行,在启动Tomcat的时候,咱们能够在日志信息中看到相似以下信息:windows

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(这里是路径信息)

 

此外,与配置nio运行模式同样,也须要将对应的Connector节点的protocol属性值改成org.apache.coyote.http11.Http11AprProtocol。 不过,上述繁琐的操做都是Tomcat 7.0.30以前的版本才须要这样配置,从Tomcat 7.0.30版本开始,Tomcat已经自带了tcnative-1.dll等文件,而且默认就是在Tomcat apr模式下运行,所以咱们只须要下载最新版本的Tomcat直接使用便可。centos

 

 

APR安装

一 windows下安装
直接拷贝tcnative-1.dll到TOMCAT_HOME/bin目录下,启动便可tomcat

二 linux centos4.8或者ubuntu10.10 server安装服务器

1. 下载包

    apr-1.5.2.tar.gz

    apr-iconv-1.2.1.tar.gz

    apr-util-1.5.4.tar.gz

    tomcat-native-1.1.34-src.tar.gz

2.  tomcat 、jdk安装(略)

3. 安装apr

tar zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make
make install

4. 安装apr-iconv

tar -zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install

5. 安装apr-util

tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install

6. 安装tomcat-native

tar zxvf tomcat-native-1.1.34-src.tar.gz
cd tomcat-native-1.1.34-src/jni/native  
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_23
make
make install

7. 添加环境变量

vi /etc/profile #在他文件末尾处添加下面的变量
# apr
export LD_LIBRARY_PATH=/usr/local/apr/lib
执行
source /etc/profile
此时环境变量生效果

8 .  配置tomcat

将对应的Connector节点的protocol属性值改成org.apache.coyote.http11.Http11AprProtoc

9. 启动tomcat,就能够看到以下信息,表示配置成功

ul 28, 2017 11:43:06 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Loaded APR based Apache Tomcat Native library 1.1.34 using APR version 1.5.2.
Jul 28, 2017 11:43:06 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Jul 28, 2017 11:43:06 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-8080"]
Jul 28, 2017 11:43:06 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 965 ms
相关文章
相关标签/搜索