CentOS Linux 7 上安装 Tomcat 的 apr

Tomcat 默认采用的是 BIO 模型,在几百并发下性能会有很严重的下降。Tomcat 还自带有 NIO 模型,另外也可以调用 apr 的库来实现操作系统级别的控制。

NIO 模型是内置的,调用很方便,只需要将 Tomcat 配置文件 server.xml 中的 protocol 修改成org.apache.coyote.http11.Http11NioProtocol ,重启即可生效。protocol 默认值是 HTTP/1.1 。

apr 则需要安装第三方库,在高并发下会让性能有明显提升。如使用的 protocol 是直接填写的 apr ,那么最好把 protocol 修改成 org.apache.coyote.http11.Http11AprProtocol ,会更加明确。

安装:

1 、请到如下两个网址下载四个安装包(当前最新版本如下所示,但请您下载您看到的最新的版本):

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

  • apr-1.6.5.tar.gz
  • apr-iconv-1.2.2.tar.gz
  • apr-util-1.6.1.tar.gz

https://tomcat.apache.org/download-native.cgi

  • tomcat-native-1.2.18-src.tar.gz

您可以:

  1. 先将上述四个安装包下载到您的 PC 上,再通过 FTP 上传到您的 CentOS Linux 7 上;
  2. 先找到并复制这四个安装包的下载地址,然后使用 wget 命令下载到您的 CentOS Linux 7 上(参见步骤 2 和 3 )。

2 、进入您的 CentOS ,先使用 yum 安装 wget(如果已经安装过,可忽略这步):

[root@host ~]# yum -y install wget

3 、Ricky 个人是喜欢把一些临时文件放到 /tmp 目录下,所以进入 /tmp 目录,使用 wget 命令把相关 tar.gz 包下载到这里:

[root@host ~]# cd /tmp
[root@host tmp]# wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz
[root@host tmp]# wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
[root@host tmp]# wget http://mirrors.hust.edu.cn/apache//apr/apr-iconv-1.2.2.tar.gz
[root@host tmp]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.18/source/tomcat-native-1.2.18-src.tar.gz

4 、安装 apr-1.6.5 :

[root@host tmp]# tar -zxvf apr-1.6.5.tar.gz
[root@host tmp]# cd apr-1.6.5
[root@host apr-1.6.5]# ./configure --prefix=/usr/local/apr
[root@host apr-1.6.5]# make
[root@host apr-1.6.5]# make install

[root@host apr-1.6.5]# cd ..
[root@host tmp]# rm -rf apr-1.6.5

5 、安装 apr-iconv-1.2.2 :

[root@host tmp]# tar -zxvf apr-iconv-1.2.2.tar.gz
[root@host tmp]# cd apr-iconv-1.2.2
[root@host apr-iconv-1.2.2]# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
[root@host apr-iconv-1.2.2]# make
[root@host apr-iconv-1.2.2]# make install

[root@host apr-iconv-1.2.2]# cd ..
[root@host tmp]# rm -rf apr-iconv-1.2.2

6 、安装 apr-util-1.6.1 :

请先安装和更新 apr-util 的依赖包 expat-devel ,否则编译安装 apr-util 会报错:

[root@host tmp]# yum install expat-devel -y
[root@host tmp]# yum update expat-devel -y

然后再安装 apr-util :

[root@host tmp]# tar -zxvf apr-util-1.6.1.tar.gz
[root@host tmp]# cd apr-util-1.6.1
[root@host 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
[root@host apr-util-1.6.1]# make
[root@host apr-util-1.6.1]# make install

[root@host apr-util-1.6.1]# cd ..
[root@host tmp]# rm -rf apr-util-1.6.1

7 、安装 tomcat-native-1.2.18 :

以下 configure 命令中的 –with-java-home= 参数是 Java 的安装路径,请根据实际情况修改(如果是 Oracle 的 JDK 应为 –with-java-home=/usr/java/latest ,如果是 OpenJDK 应为 –with-java-home=/usr/lib/jvm/java )

如需指定 OpenSSL 的安装路径请使用 –with-ssl= 参数,该参数其实跟 –with-java-home= 参数一样也是可选的。

[root@host tmp]# tar -zxvf tomcat-native-1.2.18-src.tar.gz
[root@host tmp]# cd tomcat-native-1.2.18-src/native/
[root@host native]# ./configure --with-apr=/usr/local/apr --with-java-home=/xxx/yyy
[root@host native]# make
[root@host native]# make install

[root@host native]# cd /tmp
[root@host tmp]# rm -rf tomcat-native-1.2.18-src

8 、添加环境变量:

[root@host tmp]# echo "# apr" >> /etc/profile
[root@host tmp]# echo "export LD_LIBRARY_PATH=/usr/local/apr/lib" >> /etc/profile
[root@host tmp]# source /etc/profile

9 、修改 Tomcat 的配置文件 server.xml :

将 protocol 修改成 org.apache.coyote.http11.Http11AprProtocol 即可:

<Connector      port="8080"        protocol="org.apache.coyote.http11.Http11AprProtocol"
    maxThreads="1000"
    minSpareThreads="100"
    acceptCount="900"
    disableUploadTimeout="true"
    connectionTimeout="20000"
    URIEncoding="UTF-8"
    enableLookups="false"
    redirectPort="8443"
    compression="on"
    compressionMinSize="1024"
    />

10 、重启 Tomcat ,在 catalina.out 日志中看到如下 “ http-apr-8080 ” 提示即可:

[root@host tmp]# tail -10 /usr/local/tomcat/logs/catalina.out | grep apr
05-Nov-2018 00:37:56.045 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
05-Nov-2018 00:37:56.196 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8009"]
[root@host tmp]#

 

参考自:

  • http://blog.itpub.net/29510932/viewspace-1102187/

这篇文章对你有帮助吗?

相关文章

发表评论?

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据