APR:Apache Portable Run-time libraries,Apache可移植执行库

在早期的Apache版本号中。应用程序本身必须可以处理各种详细操作系统平台的细节,并针对不同的平台调用不同的处理函数。

随着Apache的进一步开发。Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样。APR的开发就从Apache中独立出来,Apache不过使用APR而已。


Tomcat Native:这个项目能够让
Tomcat 使用 Apache 的 apr 包来处理包含文件和网络IO操作,以提升性能。
官网介绍:
The Apache Tomcat Native Library is an optional component for use with Apache Tomcat that allows Tomcat to use certain native resources for performance, compatibility, etc.
(大概意思是Tomcat能够利用一些native资源来提高性能和兼容性。


Specifically, the Apache Tomcat Native Library gives Tomcat access to the Apache Portable Runtime (APR) library's network connection (socket) implementation and random-number generator. 
(详细来说是利用了APR库中的网络连接实现和随机数生成器。)

Features of the APR connector:

  • Non-blocking I/O for Keep-Alive requests (between requests)
  • Uses OpenSSL for TLS/SSL capabilities (if supported by linked APR library)
  • FIPS 140-2 support for TLS/SSL (if supported by linked OpenSSL library)

Linux下,Tomcat启用APR须要三个组件:
  • apr
  • apr-util
  • tomcat-native.tar.gz(Tomcat自带,在bin文件夹下)

1、查看是否已经安装了apr和apr-util
# rpm -qa apr
apr-1.4.8-3.el7.x86_64

# rpm -qa apr-util
apr-util-1.5.2-6.el7.x86_64

2、查看是否有最新版的apr和apr-util
# yum list | grep apr
apr.x86_64                              1.4.8-3.el7                    @anaconda
apr-util.x86_64                         1.5.2-6.el7                    @anaconda

3、假设还没安装,用yum安装:
# yum install apr-devel apr apr-util

4、安装tomcat-native:
搜索tomcat-native安装包:
# yum list | grep tomcat-native

假设已经存在,直接安装:
# yum install tomcat-native
……
  正在安装    : tomcat-native-1.1.30-1.el7.x86_64        1/1
  验证中      : tomcat-native-1.1.30-1.el7.x86_64         1/1

已安装:
  tomcat-native.x86_64 0:1.1.30-1.el7                                                                                                                                                        
完成!

查看是否成功安装:
# rpm -qa tomcat-native
tomcat-native-1.1.30-1.el7.x86_64

配置相关的全局变量:
# vi /etc/profile
加入:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
# source /etc/profile

5、重新启动Tomcat。看看能否够成功使用APR
假设一切正常:
APR启动:
[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-18080"]
[main] org.apache.catalina.startup.Catalina.start Server startup in 13617 ms
相比NIO模式的启动,速度快了一些(~15%):
NIO启动:
[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-18080"]
[main] org.apache.catalina.startup.Catalina.start Server startup in 15671 ms

假设发现异常log,比方:
06-Aug-2015 14:46:04.949 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.30 of the APR based Apache Tomcat Native library is installed, while Tomcat
requires version 1.1.32

说明系统自带的tomcat-native版本号太低。
删除:
# yum erase tomcat-native

用yum检查有没有最新版:

# yum update tomcat-native
假设yum找不到最新版。则下载或从Tomcat/bin中解压安装。

从Tomcat/bin文件夹中,解压tomcat-native.tar.gz文件:
# tar -zxvf tomcat-native.tar.gz
得到目录:tomcat-native-1.1.33-src
# cd tomcat-native-1.1.33-src/jni/native/
# ./configure --with-apr=/usr/local/apr    (官网中样例的其它參数不须要,会自己主动找到)
# make && make install

參考:
官网的安装指导:http://tomcat.apache.org/native-doc/
Tomcat Connector三种执行模式(BIO, NIO, APR)的比較和优化:http://blog.csdn.net/clementad/article/details/47045673

(原创文章,转载请注明转自Clement-Xu的博客)

CentOS安装、配置APR和tomcat-native的更多相关文章

  1. 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat

    阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat  执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...

  2. 阿里云服务器Linux CentOS安装配置(零)目录

    阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...

  3. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  4. 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定

    阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...

  5. 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器

    阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 我在阿里云购买的服务器配置 CPU:1核 内存:2G 系统盘:40G 公共镜像:CentOS 6.5 64位 公网带宽:1Mbps ...

  6. CentOS安装配置Hadoop 1.2.1(伪分布模式)

    CentOS安装配置Hadoop1.2.1 1.下载安装文件 下载2个安装文件 JAVA环境:jdk-6u21-linux-i586.bin Hadoop环境:hadoop-1.2.1.tar.gz ...

  7. 阿里云服务器Linux CentOS安装配置(七)域名解析

    阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...

  8. 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署

    阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...

  9. 阿里云服务器Linux CentOS安装配置(五)jetty配置、部署

    阿里云服务器Linux CentOS安装配置(五)jetty配置.部署 1.官网下载jetty:wget http://repo1.maven.org/maven2/org/eclipse/jetty ...

  10. 阿里云服务器Linux CentOS安装配置(三)yum安装mysql

    阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...

随机推荐

  1. Linux安装java jdk、mysql、tomcat

    安装javajdk 1.8 检查是否安装 rpm -qa | grep jdk rpm方式安装 下载java1.8 jdk http://download.oracle.com/otn-pub/jav ...

  2. python--8、socket网络编程

    socket socket可以完成C/S架构软件的开发.须知一个完整的计算机系统是由硬件.操作系统.应用软件三者组成,具备了这三个条件,一台计算机就可以工作了.但是要跟别人一起玩,就要上互联网(互联网 ...

  3. 深入浅出java多态

    所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个 ...

  4. 高通处理器手机 解锁Bootloader 教程

    目前很多手机都需要解锁Bootloader之后才能进行刷机操作   本篇教程教你如何傻瓜式解锁Bootloader 首先需要在设置-关于手机 找到版本号(个别手机可能是内核版本号,甚至其他) 然后 快 ...

  5. 如何实现MySQL数据库使用情况的审计

    如何实现MySQL数据库使用情况的审计   最佳答案   mysql的审计功能 mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操 ...

  6. 【sqli-labs】 less8 GET - Blind - Boolian Based - Single Quotes (基于布尔的单引号GET盲注)

    加单引号 没有任何信息输出 加and 页面变化,不正常是没有任何回显 http://localhost/sqli/Less-8/?id=1' and '1'='1 http://localhost/s ...

  7. 身份认证防止重放攻击的challenge-response方法

    或者叫询问-应答机制. 基于挑战/应答(Challenge/Response)方式的身份认证系统就是每次认证时认证服务器端都给客户端发送一个不同的"挑战"字串,客户端程序收到这个& ...

  8. HTML input 控件

    <input type="file" id="file1" onChange="test()"> function test() ...

  9. AdminLTE框架基础布局使用

    boxbox-solid:去掉顶部边框线box-headerwith-border:添加头底部边框线 按钮:—— btn btn-default 默认<div class="btn-g ...

  10. python 动态修改 类和实例 的方法

    相信很多朋友在编程的时候都会想修改一下已经写好的程序行为代码,而最常见的方式就是通过子类来重写父类的一些不满足需求的方法.比如说下面这个例子. class Dog: def bark(self): p ...