1、版本信息

组件名

版本号

jdk 1.8.111
tomcat 8.5.9
apr 1.6.3
apr-iconv 1.2.2
apr-util 1.6.2
tomcat-native 1.2.10

2、Tomcat Connector的运行模式

首先大致了解Tomcat Connector的三种运行模式:bio、nio和apr

bio

bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过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="" protocol="HTTP/1.1"

               connectionTimeout=""

               redirectPort="" />

中的protocol属性值改为org.apache.coyote.http11.Http11NioProtocol即可

<Connector port="" protocol="org.apache.coyote.http11.Http11NioProtocol"

               connectionTimeout=""

               redirectPort="" />

此时,我们就可以在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的时候,我们可以在日志信息中看到类似如下信息:

-Feb- ::15.368 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-apr-]
-Feb- ::15.373 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-]
-Feb- ::15.374 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in ms

Tomcat apr运行模式的配置是三种运行模式之中相对比较麻烦的一种。据官方文档所述,Tomcat apr模式需要安装以下三个组件:

•  APR library[APR库]

•  JNI wrappers for APR used by Tomcat (libtcnative) [在Windows操作系统上,就是一个名为tcnative-1.dll的动态链接库文件]

•  OpenSSL libraries[OpenSSL库]

Tomcat6.x从6.0.32开始以及Tomcat7.x从7.0.30开始,Windows版的Tomcat已经在bin目录下自带了tcnative-1.dll等文件,并且启动后默认就运行在apr模式下,因此对于Windows操作系统我们只需要下载最新版本的Tomcat直接使用即可。而Linux版的Tomcat在bin目录下自带的是tomcat-native.tar.gz,这个包是需要和APR库一起编译安装后才能使用的。

3、在Linux下安装apr

在安装之前需要安装依赖包

yum install expat-devel gcc -y

1. 下载所需的包

apr/apr-iconv/apr-util的下载路径:http://apr.apache.org/download.cgi
本文档下载的是软件是如下版本
apr-1.6.3.tar.gz 
apr-iconv-1.2.2.tar.gz
apr-util-1.6.1.tar.gz
tomcat-native下载路径:http://archive.apache.org/dist/tomcat/tomcat-connectors/native
本文档下载的是tomcat-native-1.2.10-src.tar.gz,如果是Tomcat7.0.30之后的版本也可到tomcat安装目录的bin下面找tomcat-native.tar.gz 

2. 安装apr

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

3. 安装apr-iconv

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

4. 安装apr-util

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

5. 安装openssl(版本>1.0.2)

openssl > 1.0.2以上 (下面用1.1.0e) 下载

tar -xzvf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e
./config --prefix=/usr/local/openssl
make && make install

//备份原来的

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

//建立软连接

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

//设置到运行库

echo "/usr/local/openssl/lib">>/etc/ld.so.conf

//查看设置状态

ldconfig -v
openssl version -a

6、安装tomcat-native

tar zxvf tomcat-native-1.2.-src.tar.gz
cd tomcat-native-1.2.-src/native
(如版本是tomcat-native-1.1.x-src.tar.gz 则路径是tomcat-native-1.1.x-src/jni/native)
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.8.111 --with-ssl=/usr/local/openssl
make
make install

7. 添加环境变量

编辑/etc/profile 在文件末尾处添加下面的变量 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib   
然后执行下面命令,使环境变量即时生效
source /etc/profile
 
或者修改tomcat启动脚本catalina.sh/cactalina.bat
在文件中加入启动参数:
    JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"
或者:
    CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"

8. 验证

看到类似这样的信息就证明 apr 启动成功了。
-Feb- ::15.368 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-apr-]
-Feb- ::15.373 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-]
-Feb- ::15.374 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in ms

基于APR模式的Tomcat8环境部署的更多相关文章

  1. solr学习(笔记) windows10+jdk1.8+tomcat8环境部署

    一:准备环境 1.1 »tomcat8.5下载地址:https://tomcat.apache.org/download-80.cgi 1.2 solr各版本下载地址:http://archive.a ...

  2. MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)

    MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与 ...

  3. Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

    一.   MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...

  4. Puppet基于Master/Agent模式实现LNMP平台部署

    前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的.繁琐的工作利用自动化处理.前期我们介绍了运维自动化工具ansible的简单应 ...

  5. ProxySQL Cluster 高可用集群 + MySQL MGR环境部署 (多写模式) 部署记录

    文章转载自:https://blog.51cto.com/u_6215974/4937192 ProxySQL 在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数 ...

  6. LVS+Keepalived 高可用环境部署记录(主主和主从模式)

    之前的文章介绍了LVS负载均衡-基础知识梳理, 下面记录下LVS+Keepalived高可用环境部署梳理(主主和主从模式)的操作流程: 一.LVS+Keepalived主从热备的高可用环境部署 1)环 ...

  7. SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

    网上查到的一些springboot内嵌的tomcat开启apr的文章,好像使用的springboot版本较老,在SpringBoot 2.0.4.RELEASE中已经行不通了.自己整理了一下,供参考. ...

  8. Hadoop1.X集群完全分布式模式环境部署

    Hadoop1.X集群完全分布式模式环境部署 1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distri ...

  9. tomcat8开启APR模式

    1 Apr模式介绍 Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术.APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP ...

随机推荐

  1. ionic3引用外部插件--百度地图及echart报表的使用

    前言 ionic3提供的组件已经相当丰富咯,但是事实上有些特殊的需求,比如使用百度地图,或者第三方插件echart报表插件是,就不能用传统的方式去使用第三方插件咯,如何在Ionic3项目中使用第三方J ...

  2. pytorch-googleNet

    googleNet网络结构 输入网络: 由4个分支网络构成 第一分支: 由1x1的卷积构成 第二分支: 由1x1的卷积,3x3的卷积构成 第三分支: 由1x1的卷积, 5x5的卷积构成 第四分支: 由 ...

  3. 【Webscraper】不懂编程也能爬虫

    一.配置环境 在浏览器中安装web scraper插件. 所有安装包下载链接: https://pan.baidu.com/s/1CfAWf0wMO6WqicoUgdYgkg 提取码: nn2e 安装 ...

  4. 深度学习之强化学习Q-Learning

    1.知识点 """ 1.强化学习:学习系统没有像很多其他形式的机器学习方法一样被告知应该做什么行为, 必须在尝试之后才能发现哪些行为会导致奖励的最大化,当前的行为可能不仅 ...

  5. Scrapy+redis实现分布式爬虫

    概述 什么是分布式爬虫 需要搭建一个由n台电脑组成的机群,然后在每一台电脑中执行同一组程序,让其对同一网络资源进行联合且分布的数据爬取. 原生Scrapy无法实现分布式的原因 原生Scrapy中调度器 ...

  6. 代码托管至Github

    昨天突然之间觉得作为一个iOS程序员,没有在github上提交过自己的代码真是一大遗憾,不管是自己写的优秀的代码还是刚开始学习,用来学习练手的项目.然后我就很想要学习怎么往github上提交代码,很不 ...

  7. Python把json格式的string对象转变成dict对象操作、Python3不能使用urllib2、urllib.parse.urlencode(params).encode(encoding='UTF8')

    son格式的string对象转变成dict对象操作 content=eval(content)#json字典转化 Python3不能使用urllib2 直接使用urllib.request替换urll ...

  8. Rowlock、UPDLOCK

      ROWLOCK 使用行级锁,而不使用粒度更粗的页级锁和表级锁. UPDLOCK 读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束.UPDLOCK 的优点是允许您读取数据(不阻塞 ...

  9. 转:获取windows凭证管理器明文密码

    1.运行cmdkey /list查看windows保存凭证 方法1.mimikaz mimikatz vault::cred 2.利用powershell尝试获取 windows 普通凭据类型中的明文 ...

  10. Openstack知识点总结

    Openstack: 一.云计算+openstack概念: 1.云计算是一种按使用量付费的模式,这种模式提供可用的,便捷的,按需的访问,通过互联网进入可配置的计算资源共享池(资源包括网络,计算,存储, ...