阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 6.5优化Tomcat 7

179次阅读
没有评论

共计 4909 个字符,预计需要花费 13 分钟才能阅读完成。

大家都听说了在 Apache Tomcat6 中支持了 Java 语言的特性 NIO(New I/O),不管你对 NIO 的技术是否熟悉,但你肯定能想象的到 NIO 是一个好东西。的确,使用 NIO 在服务器端会有更好的性能,加强服务器端对并发处理的性能。请注意:很抱歉,在 tomcat6 在默认的配置选项中是没有把 NIO 功能打开。所以很多正在使用 Tomcat6 的朋友们本以为能快活的使用上 NIO。

cd /usr/local/tomcat1/conf
vi server.xml

一、设置 Tomcat 连接器池。

黄海在配置文件中添加了如下配置:

<Executor name=”tomcatThreadPool” namePrefix=”catalina-exec-” maxThreads=”1000″ minSpareThreads=”350″ />

 二、Linux 下修改 JVM 内存大小

要添加在 tomcat 的 bin 下 catalina.sh 里,位置 cygwin=false 前。注意引号要带上, 红色的为新添加的.

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS=”-server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m”

cygwin=false

三、查看当前系统 open files 的默认值:

ulimit -a

没改过是 1024

文件系统最大可打开文件数:cat /proc/sys/fs/file-max 

我的机器是 396399

修改文件系统最大打开文件数:echo 396399 >/proc/sys/fs/file-max

此值只能往小的设置不能超过限制值。

1、在 vi /etc/security/limits.conf 文件中设置最大打开文件数 添加:

*      soft    nofile        65535       

*      hard    nofile        65535

最后用重启 ulimit - a 再次查看,open files 的值,如果改过来,则生效。

四、安装 Tomcat 的 Apr,提升性能

发现 Tomcat 可以用 Apache Portable Runtime 来提供更强性能,提升 Web 静态页面的处理能力,不再需要专门的 Web Server 来处理静态页面了。apr 与 tomcat-native 提供更好的伸缩性、性能和集成到本地服务器技术。

 

如果没有 apr 技术,启动 tomcat 时出现如下提示:

 

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_06/jre/lib/i386/client:/usr/java/jdk1.6.0_06/jre/lib/i386:/usr/java/jdk1.6.0_06/
jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib

按照官方说明需要:

APR library

OpenSSL libraries

openssl 可以用

yum install -y openssl-devel

apr 还是下载 *.gz 来安装。

(1)安装 apr

mkdir  /root/software
cd /root/software
wget http://mirror.bit.edu.cn/apache/apr/apr-1.4.6.tar.gz
tar zxvf apr-1.4.6.tar.gz 
cd apr-1.4.6
./configure –prefix=/usr/local/apr
make
make install 

安装 apr 的时候出现

./configure –prefix=/usr/local/apr

rm: cannot remove `libtoolT’: No such file or directory

解决办法:

vim configure

在 30048 行 #    $RM “$cfgfile” 前面加 #注释掉

在重新./configure

(2)安装 apr-iconv

cd /root/software
wget http://mirror.bit.edu.cn/apache/apr/apr-iconv-1.2.1.tar.gz
tar -zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure –prefix=/usr/local/apr-iconv –with-apr=/usr/local/apr 
make
make install

(3)安装 apr-util

cd /root/software
wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.4.1.tar.gz
tar zxvf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure –prefix=/usr/local/apr-util  –with-apr=/usr/local/apr  –with-apr-iconv=/usr/local/apr-iconv/bin/apriconv 
make
make install

PS:我有经历两次不同装 apr,第一次是我的 CentOS 没有升级,一个升级后,升级前会有一些杂七杂八的 error 说不成,一般都是少包什么的,你给它 yum update 就行了,建议升级后再装,会比较正常一点点~~

(4)安装 tomcat-native

//tomcat-native-1.1.27-src.tar.gz  这个我装的 tomcat 里边就自己带了,在 bin 目录下,如果你们没有找到,去网上下一个就行了。。具体哪下我也不知道⊙﹏⊙b 汗,找 apache 的官网吧

cd /usr/local/tomcat1/bin   
tar zxvf tomcat-native.tar.gz 
cd tomcat-native-1.1.27-src/jni/native   
./configure –with-apr=/usr/local/apr
make 
make install

(5)设置 apr 的环境变量

cd /usr/local/tomcat1/bin

vi catalina.sh

在文件的 #!/bin/sh 下添加如下内容:

#!/bin/sh

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_LIBRARY_PATH

这样的话,我们只是把这个 TOMCAT 的 APR 添加上了,不破坏其它 TOMCAT 的配置信息。

启动 tomcat 后,看日志:
bin/startup.sh

head logs/catalina.out

可以看到以下结果:

CentOS 6.5 优化 Tomcat 7

好了,可以运行了,但没有测试其性能提高多少。

在高并发下会让性能有明显提升。安装完成后重启即可生效。如使用默认 protocal 就是 apr,但最好把将 protocol 修改成 org.apache.coyote.http11.Http11AprProtocol,会更加明确。

cd /usr/local/tomcat1/conf
vi server.xml

替换 Connector 内容如下:

<Connector port=”8080″
        protocol=”org.apache.coyote.http11.Http11AprProtocol”
        executor=”tomcatThreadPool”
        compression=”on”
        compressionMinSize=”2048″
        maxThreads=”30000″
        minSpareThreads=”512″
        maxSpareThreads=”2048″
        enableLookups=”false”
        redirectPort=”8443″
        acceptCount=”35000″
        debug=”0″
        connectionTimeout=”40000″
        disableUploadTimeout=”true” URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />

 

 

下面我们开始进行测试两种协议的压力情况:

 

 centos 安装 ab

yum install httpd-tools

准备之后我们就可以测试了

ab -kc 1000 -n 10000 http://localhost:8080/

这个指令会使用 1000 个并发,进行连接 10000 次。结果如下:

NIO 最快的一次:

CentOS 6.5 优化 Tomcat 7

APR 的最快一次:

CentOS 6.5 优化 Tomcat 7

差距是 50% 左右,强烈推荐使用 APR 协议!!!不要使用 NIO 协议 +APR 库支持的行为!!!!!!!!

如果安装不上 APR 或者真的没有办法启用 APR,那么用如下的备用方案:

<Connector port=”8080″
        protocol=”org.apache.coyote.http11.Http11NioProtocol”
        executor=”tomcatThreadPool”
        compression=”on”
        compressionMinSize=”2048″
        maxThreads=”30000″
        minSpareThreads=”512″
        maxSpareThreads=”2048″
        enableLookups=”false”
        redirectPort=”8443″
        acceptCount=”35000″
        debug=”0″
        connectionTimeout=”40000″
        disableUploadTimeout=”true” URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />

在安装 tomcat-native 时可以指定 JDK 的位置

./configure –with-apr=$HOME/APR \
 –with-java-home=$JAVA_HOME \

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123076.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4909字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中