JDK/Tomcat升级

2017-02-25  本文已影响877人  小程有话说

背景:公司要求项目引入SSO(Single Sign On),SSO对JDK版本要求最低是1.7,而目前机器使用的是1.6版本,需要升级JDK。


参考: Tomcat8安装和配置、优化 G1垃圾回收器 实战Java虚拟机

升级JDK

公司测试线上服务器安装的JDK版本是jdk1.6.0_45,我打算安装最新的Jre1.8.0_121。

JDK与JRE区别

JVM = Class loader system + Runtime data area + Execution Engine.
JRE = JVM + Java packages classes(like util, math, lang, awt, swing etc)+ Runtime libraries.
JDK = JRE + Development/debugging tools.
JDK/JRE关系JDK/JRE关系

我并不需要在测试线上机器上打包编译,仅仅需要一个可供应用运行的环境,所以我选择下载Jre

修改Tomcat Jre配置

修改Tomcat文件夹下bin/catalina.sh文件,文件头添加。

JRE_HOME=/XXX/jre1.8.0_121

这样在Tomcat启动时就会使用指定的Jre环境。

升级Tomcat

升级Tomcat到9.0.0.M17版本(该版本运行环境必须>=1.8)。

修改Tomcat文件夹下bin/catalina.sh文件,文件头添加。

CATALINA_HOME=Tomcat路径
$CATALINA_HOME/catalina.pid

Linux下启动、关闭Tomcat分别执行bin下startup.sh和shutdown.sh脚本。

如果执行shutdown.sh仍然无法停止Tomcat,可以修改shutdown.sh脚本。

//最后一行
exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
//改为
exec "$PRGDIR"/"$EXECUTABLE" stop 10 -force

Tomcat优化

修改conf/server.xml文件。

<Executor name="tomcatThreadPool" 
namePrefix="catalina-exec-"
        maxThreads="500" 
        minSpareThreads="100"
        maxQueueSize = "100"
        prestartminSpareThreads="true"/>

参数说明:

<Connector 
   executor="tomcatThreadPool"
   port="8080" 
   protocol="org.apache.coyote.http11.Http11Nio2Protocol" 
   connectionTimeout="20000" 
   maxConnections="10000" 
   redirectPort="8443" 
   enableLookups="false" 
   acceptCount="100" 
   maxPostSize="10485760" 
   compression="on" 
   disableUploadTimeout="true" 
   compressionMinSize="2048" 
   acceptorThreadCount="2" 
   compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" 
   URIEncoding="utf-8"
/>

参数说明:

JVM优化

原先JVM参数配置:

-server -Xms8g -Xmx8g -Xmn1g -Xss2048K 
-XX:PermSize=512m -XX:MaxPermSize=512m 
-XX:ParallelGCThreads=8 
 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 
 -XX:+UseCMSCompactAtFullCollection 
-XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=10 
-XX:CMSInitiatingOccupancyFraction=80 -Dxxx=xxx

参数说明:

CMS堆结构CMS堆结构

CMS(Concurrent Mark Sweep)并发标记清除,多次垃圾回收之后会产生内存碎片,需要在多次GC之后进行一次内存碎片整理。

G1(Garbage-First)是JDK 1.7中正式使用全新的垃圾回收器,G1回收器拥有独特的垃圾回收策略;从分代上看,G1依然属于分代垃圾回收器,会区分年轻代和老年代;但从堆结构上看,它不要求整个年轻代、老年代都连续;使用了分区算法。

G1堆结构G1堆结构

G1特点:

新的JVM参数:

-server -Xms8g -Xmx8g -Xss2048K -XX:+UseG1GC 
-XX:MaxGCPauseMillis=500 XX:InitiatingHeapOccupancyPercent=55 
-XX:ParallelGCThreads=10 -XX:+DisableExplicitGC

把JVM参数配置在bin/catalina.sh文件头中。

JAVA_OPTS="xxx"

G1参数说明:

上一篇 下一篇

猜你喜欢

热点阅读