关于 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 相关源码包,下载地址如下:
- https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
- https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
- https://dlcdn.apache.org//apr/apr-iconv-1.2.2.tar.gz
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