记录tomcat优化之为tomcat安装APR

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录tomcat优化之为tomcat安装APR相关的知识,希望对你有一定的参考价值。

APR(Apache Portable Runtime)实现操作系统级别控制,大大提高并发处理能力;但需要安装apr和tomcat-native库;

(1)安装apr
这里我用的是tomcat9,需要较新版本的apr,所以我这里采用源码的安装方式
进入http://apr.apache.org/download.cgi 下载需要的apr 与apr-util
wget -c http://mirror-hk.koddos.net/apache//apr/apr-1.6.5.tar.gz
wget -c http://mirror-hk.koddos.net/apache//apr/apr-util-1.6.1.tar.gz
wget -c http://mirror-hk.koddos.net/apache//apr/apr-iconv-1.2.2.tar.gz

mkdir -p /usr/local/apr-1.6.5
mkdir -p /usr/local/apr-iconv-1.2.2
mkdir -p /usr/local/apr-util-1.6.1

tar -zxvf apr-1.6.5.tar.gz
这个版本的apr可能需要修改一下configure,大概在43167行那里注释掉$RM "$cfgfile"
vi configure
# $RM "$cfgfile"
./configure --prefix=/usr/local/apr-1.6.5
make
make install

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

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

先配置几个环境变量
向/etc/profile添加下面几行
export CATALINA_HOME=/home/tomcat
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH:/usr/local/apr-1.6.5/bin:/usr/local/apr-util-1.6.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib:/usr/local/apr-1.6.5/lib/:/usr/local/apr-util-1.6.1/lib
然后source /etc/profile 注意JAVA_HOME一定要配置成自己的,你可以先通过ls -al /usr/lib/jvm/ 来查看找到路径配入

(2)安装tomcat-native

先安装较新的openssl
mkdir -p /usr/local/openssl-1.1.2
wget -c https://github.com/openssl/openssl/archive/master.zip
unzip master.zip
cd openssl-master
./config --prefix=/usr/local/openssl-1.1.2
make
make install

在tomcat的安装目录下就有bin/tomcat-native.tar.gz,进入tomcat的安装目录
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.17-src/native
然后就可以编译安装了
./configure --with-apr=/usr/local/apr-1.6.5 --with-ssl=/usr/local/openssl-1.1.2

(3)配置tomcat引入apr
向conf/server.xml添加
<Listener className="org.apache.catalina.core.AprLifecycleListener" useAprConnector="true" SSLEngine="on" />
如果要看上面参数的意思可以参考APR Lifecycle Listener说明

ln -s /usr/local/apr/lib/libtcnative-1.so /usr/lib64/libtcnative-1.so

再修改/etc/profile
export PATH=$JAVA_HOME/bin:$PATH:/usr/local/apr-1.6.5/bin:/usr/local/apr-util-1.6.1/bin:/usr/local/apr/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib:/usr/local/apr-1.6.5/lib/:/usr/local/apr-util-1.6.1/lib:/usr/local/apr/lib
然后source /etc/profile

最后再重启tomcat
sudo -u tomcat service tomcat start -security

再进入tomcat安装目录下的/logs目录下
cat catalina.2018-10-21.log
如果有出现
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.17] using APR version [1.6.5].
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.2-dev xx XXX xxxx]
...
org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-apr-8009"]
...
org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8009"]
就说明安装成功了,完毕!

以上是关于记录tomcat优化之为tomcat安装APR的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 8/9 基于APR库的高并发性能优化

八cent OS下tomcat启用APR并发模式

CentOS 7 Tomcat 8 9 基于APR库性能优化

linux安装tomcat及优化

tomcat runing on daemon with apr and ssl mode

Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化