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
您可以:
- 先将上述四个安装包下载到您的 PC 上,再通过 FTP 上传到您的 CentOS Linux 7 上;
- 先找到并复制这四个安装包的下载地址,然后使用 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/
发表评论?