centos7安装tomcat7的步骤如下:
1.下载tomcat7的tar.gz文件,并解压缩到/usr/local目录
$>tar -zxvf apache-tomcat-7.0.59.tar.gz -C /usr/local
并目录更名为tomcat7
$> mv apache-tomat-7.0.59 tomcat7
2.进入tomcat7的bin目录设置
$> cd /usr/local/tomcat7/bin
解压commons-daemon-native.tar.gz
$>tar -zxvf commons-daemon-native.tar.gz
进入commons-daemon-native.src目录
$>cd commons-daemon-native.src/unix
进行配置和编译
$>./configure
$>make
make后,会在当前文件夹下生成一个名为 jsvc 的文件,将其复制到$CATALINA_HOME/bin目录
$>cp jsvc ../../
3.添加一个运行tomcat的用户,无登录权限
$>useradd tomcat -M -d / -s /usr/sbin/nologin
4.回到$CATALINA_HOME/bin目录下
$> cd /usr/local/tomcat7/bin
修改目录下的daemon.sh文件
$>vi daemon.sh
在第一行,#!/bin/sh 之后 添加jsvc调优:
# chkconfig: - 85 15
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31
export JRE_HOME =/usr/lib/jvm/jdk1.8.0_31/jre
export CATALINA_BASE=/usr/local/tomcat7
export CATALINA_HOME=/usr/local/tomcat7
export CATALINA_PID=$CATALINA_BASE/logs/catalina-daemon.pid
export CATALINA_TMP=$CATALINA_BASE/temp
export TOMCAT_USER=tomcat
export CATALINA_OPTS="-server -Xss512k -Xms2048M -Xmx2048M -XX:MaxPermSize=256M -XX:PermSize=128M -XX:NewSize=128M -XX:+CMSIncrementalMode
-XX:CMSInitiatingOccupancyFraction=80 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=8
-Djavax.servlet.request.encoding=UTF-8 -Djavax.servlet.response.encoding=UTF-8 -Dfile.encoding=UTF-8
-Duser.timezone=Asia/Shanghai -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10086
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.3.5"
参数设置说明:
-XX:+CMSIncrementalMode
该标志将开启CMS收集器的增量模式。增量模式经常暂停CMS过程,以便对应用程序线程作出完全的让步。因此,收集器将花更长的时间完成整个收集周期。因此,只有通过测试后发现正常CMS周期对应用程序线程干扰太大时,才应该使用增量模式。由于现代服务器有足够的处理器来适应并发的垃圾收集,所以这种情况发生得很少。
-XX:CMSInitiatingOccupancyFraction
当堆满之后,并行收集器便开始进行垃圾收集,例如,当没有足够的空间来容纳新分配或提升的对象。对于CMS收集器,长时间等待是不可取的,因为在并发垃圾收集期间应用持续在运行(并且分配对象)。因此,为了在应用程序使用完内存之前完成垃圾收集周期,CMS收集器要比并行收集器更先启动。
因为不同的应用会有不同对象分配模式,JVM会收集实际的对象分配(和释放)的运行时数据,并且分析这些数据,来决定什么时候启动一次CMS垃圾收集周期。为了引导这一过程, JVM会在一开始执行CMS周期前作一些线索查找。该线索由 -XX:CMSInitiatingOccupancyFraction=<value>来设置,该值代表老年代堆空间的使用率。比如,value=75意味着第一次CMS垃圾收集会在老年代被占用75%时被触发。通常CMSInitiatingOccupancyFraction的默认值为68(之前很长时间的经历来决定的)。
-XX:+UseConcMarkSweepGC
该标志首先是激活CMS收集器。默认HotSpot JVM使用的是并行收集器。
-XX:UseParNewGC
当使用CMS收集器时,该标志激活年轻代使用多线程并行执行垃圾回收。这令人很惊讶,我们不能简单在并行收集器中重用-XX:UserParNewGC标志,因为概念上年轻代用的算法是一样的。然而,对于CMS收集器,年轻代GC算法和老年代GC算法是不同的,因此年轻代GC有两种不同的实现,并且是两个不同的标志。
注意最新的JVM版本,当使用-XX:+UseConcMarkSweepGC时,-XX:UseParNewGC会自动开启。因此,如果年轻代的并行GC不想开启,可以通过设置-XX:-UseParNewGC来关掉。
XX:ConcGCThreads
标志-XX:ConcGCThreads=<value>(早期JVM版本也叫-XX:ParallelCMSThreads)定义并发CMS过程运行时的线程数。比如value=4意味着CMS周期的所有阶段都以4个线程来执行。尽管更多的线程会加快并发CMS过程,但其也会带来额外的同步开销。因此,对于特定的应用程序,应该通过测试来判断增加CMS线程数是否真的能够带来性能的提升。
如果还标志未设置,JVM会根据并行收集器中的-XX:ParallelGCThreads参数的值来计算出默认的并行CMS线程数。该公式是ConcGCThreads = (ParallelGCThreads + 3)
/4
。因此,对于CMS收集器, -XX:ParallelGCThreads标志不仅影响“stop-the-world”垃圾收集阶段,还影响并发阶段。
总之,有不少方法可以配置CMS收集器的多线程执行。正是由于这个原因,建议第一次运行CMS收集器时使用其默认设置, 然后如果需要调优再进行测试。只有在生产系统中测量(或类生产测试系统)发现应用程序的暂停时间的目标没有达到 , 就可以通过这些标志应该进行GC调优。
-XX:ParallelGCThreads=n
设置并行收集器收集时使用的CPU数。并行收集线程数。
接下来这些参数 是针对于 JMX 远程监控的:
-Dcom.sun.management.jmxremote 启用JMX远程监控
-Dcom.sun.management.jmxremote.port=10086 使用端口10086
-Dcom.sun.management.jmxremote.authenticate=false 远程连接不需要密码认证
-Dcom.sun.management.jmxremote.ssl=false 不使用SSL
-Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access 使用指定的JMX帐号授权文件
-Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password 使用指定的JMX帐号文件
修改ARG0的值为如下:
ARG0="/usr/local/tomcat7"
设置其中的
TOMCAT_USER=tomcat,JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31
为目录下的.sh文件添加可执行权限
$> chmod +x *.sh
设置$CATALINE_HOME文件夹及其所有子文件Owner为tomcat
$>chown -R tomcat:tomcat /usr/local/tomcat7
5.创建 $CATALINA_HOME/bin/daemon.sh 的一个链接到 /etc/init.d/ 下,service名为tomcat7
$> ln -s /usr/local/tomcat7/bin/daemon.sh /etc/init.d/tomcat7
添加chkconfig中
$> chkconfig --add tomcat7
设置自启动的级别
$>chkconfig --level 2345 tomcat7 on
测试启动
$>service tomcat7 start
6.firewall防火墙设置
新建文件/usr/lib/firewalld/services/tomcat.xml,内容为:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Tomcat</short>
<description>Apache Tomcat Web Application Container</description>
<portprotocol="tcp"port="8080"/>
</service>
设置防火墙8080端口开放
firewall-cmd --permanent --add-service=tomcat
firewall-cmd --reload
这里我们验证一下JMX远程监控,推荐使用VisualVM监控;
JDK中还藏着一个宝贝,它的名字叫做VisualVM。VisualVM是Sun的一个OpenJDK项目,其目的在于为Java应用创建一个整套的问题解决工具;
官网主页:
http://visualvm.java.net/