【Tomcat】为Tomcat服务配置本地Apr库以提升性能

关于 apr 和 apr-util 对 Tomcat 服务的性能提升的说明:

要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。APR对于Tomcat最大的作用就是socket调度。你在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的。【本段文字描述引用于 Andy2019 CSDN博客】

Apache Tomcat 服务在默认情况下的启动,在 logs/catalina.out 日志里面会打印下面一行日志:

objectivec 复制代码
17-Oct-2023 09:11:04.347 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/local/apr/lib:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]上找不到
基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能

为了解决这个问题,我们需要在服务器上下载和安装 Apr 库(包括apr、apr-iconv、apr-util),以及 Tomcat 自带的tomcat-native。

这里使用的是Apache官方最新的 Apr 相关源码包,下载地址如下:

tomcat-native包在Tomcat的安装目录的bin目录下,

objectivec 复制代码
# ls -ltr tomcat-native.tar.gz
-rwxr--r-- 1 root root 438209 10月 12 08:55 tomcat-native.tar.gz
# pwd
/root/apache-tomcat-8.5.95/bin

将下载的 Apr 源码包上传到服务器,并解压、编译和安装:

objectivec 复制代码
# tar -xzf apr-1.7.4.tar.gz
# cd apr-1.7.4/
# ./configure --prefix=/usr/local/apr
# make
# make install

安装成功的截图:

安装apr-iconv和apr-util

objectivec 复制代码
# tar -xzf apr-iconv-1.2.2.tar.gz
# cd apr-iconv-1.2.2/
# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-iconv
# make 
# make install

# tar -xzf apr-util-1.6.3.tar.gz
# cd apr-util-1.6.3/
# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util
# make
# make install

备注:安装apr-util的时候,make如果报下面的错误,需要安装:expat-devel

objectivec 复制代码
1.6.3/include/private  -I/usr/local/apr/include/apr-1    -o xml/apr_xml.lo -c xml/apr_xml.c && touch xml/apr_xml.lo
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
 #include <expat.h>
                   ^
compilation terminated.
make[1]: *** [xml/apr_xml.lo] 错误 1
make[1]: 离开目录"/root/apr-util-1.6.3"
make: *** [all-recursive] 错误 1
objectivec 复制代码
# yum install -y expat-devel

安装成功的截图:

安装成功后,在系统环境变量(如:/root/.bash_profile)里面增加下面的配置,并写source 使生效。

objectivec 复制代码
LD_LIBRARY_PATH=/usr/local/apr/lib
export LD_LIBRARY_PATH

安装编译tomcat-native

objectivec 复制代码
# cd apache-tomcat-8.5.95/bin
# ls -ltr tomcat-native.tar.gz 
-rwxr--r-- 1 root root 438209 10月 12 08:55 tomcat-native.tar.gz
# tar -xzf tomcat-native.tar.gz
# cd tomcat-native-1.2.39-src/native
# ./configure --with-apr=/usr/local/apr
# make 
# make install

安装成功的截图:

重启Tomcat服务,在catalina.out文件中打印出下面的日志记录,说明Apr环境安装成功

objectivec 复制代码
17-Oct-2023 09:13:31.222 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.2.39]。
17-Oct-2023 09:13:31.222 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能:IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [{4}]。
17-Oct-2023 09:13:31.222 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true]

参考:

https://apr.apache.org/download.cgi

https://cloud.tencent.com/developer/article/1504180

https: //blog.csdn.net/Andy2019/article/details/79373050

https://blog.csdn.net/weixin_43930641/article/details/105269092

相关推荐
chalmers_151 天前
tomcat http 怎么改成 https
http·https·tomcat
编程就是如此1 天前
手撕Tomcat
java·tomcat
计算机学姐1 天前
基于SpringBoo的地方美食分享网站
java·vue.js·mysql·tomcat·mybatis·springboot·美食
麓殇⊙2 天前
mybatis--多对一处理/一对多处理
java·tomcat·mybatis
爱的叹息2 天前
Spring Boot 支持的内嵌服务器(Tomcat、Jetty、Undertow、Netty(用于 WebFlux 响应式应用))详解
服务器·spring boot·tomcat
网硕互联的小客服4 天前
Tomcat 服务频繁崩溃的排查方法
java·tomcat
计算机学姐4 天前
基于SSM的校园美食交流系统
java·vue.js·mysql·spring·tomcat·mybatis·美食
姜太小白4 天前
【Nginx】Nginx代理Tomcat配置及404问题解决
运维·nginx·tomcat
东方芷兰5 天前
JavaWeb 课堂笔记 —— 08 请求响应
xml·java·笔记·spring·tomcat·html·idea
朱啸毅5 天前
如何使用Tomcat
java·tomcat