服务器搭建十二——Tomcat7安装及优化配置

安装环境

• 操作系统:Centos6.4 x64
• JDK版本:HotSpot JDK1.7.0_79
• Tomcat版本: tomcat-7.0.79
• Tomcat APR源码包: tomcat-native-1.1.34

1. 安装JDK

我使用的版本:jdk-7u79-linux-x64.rpm

1) 查询是否已安装本版本JDK
java -version
cd到HotSpot JDK1.7.0_79版本安装包所在文件夹
2) 安装
rpm****-ivh****jdk-7u79-linux-x64**.rpm
JDK将默认安装在文件夹/usr/java/jdk1.7.0_79中
3) 修改环境变量
vim /etc/profile
在文件最下方添加以下内容
JAVA_HOME=/usr/java/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
保存文件后,使环境变量生效
source /etc/profile
4) 查询当前JDK是否为,如果输出包含HotSpot和1.7.0_79说明安装成功
[root@Centos src]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

2. 安装Tomcat

我使用的版本 tomcat-7.0.79 tomcat-native-1.1.34

  • 安装Tomcat
cd到Tomcat标准包目录
解压
tar -zxvf tomcat-7.0.79.tar.gz
  • Tomcat连接器
    Tomcat有三种连接器:APR、NIO、BIO,性能上APR、NIO要优于BIO,一般情况下APR略优于NIO。因此建议使用APR连接器。通过安装Tomcat Native Library,可以让Tomcat开启APR。
安装依赖:yum install apr-devel openssl-devel glibc gcc
cd到Tomcat APR源码包目录
解压
tar -zxvf tomcat-native-1.1.34-src.tar.gz
进入目录
cd tomcat-native-1.1.34-src/jni/native
配置,将--with-java-home值修改为JDK安装路径, native库将被安装在--prefix指定目录下  
./configure --with-apr=/usr/bin/apr-1-config \
            --with-java-home=/usr/java/jdk1.7.0_79 \
            --with-ssl=yes \
            --prefix=/usr/local/bin/tomcat-native-1.1.34/
安装
make && make install

3. Tomcat配置

  • Tomcat标准包默认已进行过配置,可以跳过本步骤
修改tomcat的bin/setclasspath.sh 在最上面添加以下内容
# 设置$CATALINA_HOME/lib目录,才能在该目录中查找native library
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/bin/tomcat-native-1.1.34/lib
export LD_LIBRARY_PATH
# 设置JAVA_HOME,该JAVA_HOME最好与编译native library的Java是同一个
JAVA_HOME=/usr/java/jdk1.7.0_79
export JAVA_HOME
  • JVM优化配置
    优化内存使用、回收机制和日志记录情况
修改tomcat的bin/ catalina.sh 在最上面添加以下内容(Tomcat标准包已添加)
JAVA_OPTS="-server –Xms4G –Xmx4G -Xss1024K -XX:PermSize=128M -XX:MaxPermSize=4096M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Xloggc: /home/app/web/tomcat /logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/app/web/tomcat /logs/"
说明
1.  以上配置默认的新生代+老生代内存为4G,需根据实际需要修改。如果是该Tomcat专用服务器建议配置为服务器内存的50-75%(修改–Xms和–Xmx)。JVM一般最大占用内存为Xmx+ XX:MaxPermSize+最大线程数* Xss
2.  采用了CMS垃圾回收机制,适合于响应时间要求高的场景
3.  记录了JVM垃圾回收日志和OOM异常日志,垃圾回收日志位于-Xloggc指定的文件,OOM内存转储文件位于-XX:HeapDumpPath指定的目录下,需根据tomcat实际部署位置修改这两个参数
  • Tomcat优化配置

此处只简单说明了下Tomcat配置

修改tomcat的conf/server.xml 中的线程池(Executor)和连接器(Connector)配置内容
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="200" minSpareThreads="100" maxQueueSize="700" prestartminSpareThreads="true"/>
<Connector port="82" executor="tomcatThreadPool" protocol="HTTP/1.1" 
                connectionTimeout="20000" 
                URIEncoding="UTF-8" 
                enableLookups="false"
                 compression="on"   
            compressionMinSize="2048"   
            noCompressionUserAgents="gozilla, traviata"               compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"/>

配置说明:
• Executor

  1. name:线程池执行器的名称
  2. namePrefix:线程名称前缀
  3. maxThreads:最大线程数,默认200,实际设置需要通过针对使用的服务器进行性能测试找>到最优值。一般服务器建议设置为200,服务器性能更好可以设置更高。
  4. minSpareThreads:最小保持线程数,默认25。建议设置为100。
  5. maxQueueSize:最大等待任务数,默认为Integer.MAX_VALUE。
  6. prestartminSpareThreads:是否在Tomcat启动时初始化minSpareThreads数量的线程,默认为false,建议开启,进行预热。

• Connector

  1. port:对外服务端口,根据需要配置
  2. executor线程池,与配置的Executor的name相同
  3. protocol:使用协议, 配置为HTTP/1.1时,如果检测到支持APR则使用APR
  4. connectionTimeout:连接超时时间,单位毫秒
  5. URIEncoding:URL编码
  6. enableLookups:为性能设置为false,为ture时执行request.getRemoteHost()将访问DNS查找客户机名,为false将只返回IP
  7. compression:是否开启gzip压缩
  8. compressionMinSize:压缩的最小字节数,对低于此值的内容不进行压缩
  9. noCompressionUserAgents:不压缩的浏览器agent,部分老旧浏览器不支持gzip
  10. compressableMimeType:对配置的mime类型进行压缩(需满足浏览器和压缩的最小字节数要求)

特别说明
关于Tomcat的优化配置和JVM的优化配置,不是简单几句话既可以说明的,后续研究之后在单独写文章吧。下面这个是公司内部的一个培训资料可以用来先了解下优化。至于tomcat的配置文件也是很重要的一部,本文只简单说明了线程池和连接池,还有日志、部署方式等等,完全可以很厚的一本书来。Tomcat优化PPTTomcat架构解析.刘光瑞

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271