Skip to content

Instantly share code, notes, and snippets.

@gotnix
Last active December 23, 2019 16:29
Show Gist options
  • Select an option

  • Save gotnix/5590088 to your computer and use it in GitHub Desktop.

Select an option

Save gotnix/5590088 to your computer and use it in GitHub Desktop.
set tomcat enviroment
#!/bin/bash
# Set java options for performance and monitor.
## Use `Concurrent Mark Sweep (CMS) Collector' .
#-XX:+UseConcMarkSweepGC \
#-XX:+UseParNewGC \
#
## Use `Garbage First (G1) Garbage Collector' .
# https://dev.qq.com/topic/5747b32ece67c4495539d338 超详细G1垃圾收集器介绍
# http://blog.jobbole.com/109170/ 深入理解 Java G1 垃圾收集器
#
#-XX:+UseG1GC \
#-XX:MaxGCPauseMillis=200 \
#
## More infomation:
# http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
# http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
#
# JDK 1.8 设置持久代的参数有变化:
# -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
LAN_IP=$(/sbin/ip addr show | awk --posix '$NF == "eth1" || $NF == "em2"{gsub(/\/[0-9]{1,2}/, "", $2); print $2}')
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true \
-Djava.awt.headless=true"
## 定义JMX 的访问端口,这个监控比较消耗资源,建议打开GC日志##
CATALINA_OPTS=" -server \
-Xms64m \
-Xmx64m \
-XX:NewRatio=1 \
-XX:SurvivorRatio=1 \
-XX:PermSize=64m \
-XX:MaxPermSize=64m \
-XX:ThreadStackSize=128k \
-XX:+UnlockExperimentalVMOptions \
-XX:+UseBiasedLocking \
-XX:+AggressiveOpts \
-XX:+UseConcMarkSweepGC \
-XX:+UseParNewGC \
-XX:+CMSClassUnloadingEnabled \
-XX:-UseTLAB \
-XX:-UseAdaptiveSizePolicy \
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses \
-Xloggc:${CATALINA_HOME}/logs/tomcat_gc.log \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=3 \
-XX:GCLogFileSize=128M \
-XX:+PrintGC \
-XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps \
-XX:+PrintTenuringDistribution \
-Djava.rmi.server.hostname=${LAN_IP} \
-Dcom.sun.management.jmxremote.port=8006 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false"
## 定义Tomcat 的PID文件 ##
CATALINA_PID="${CATALINA_HOME}/work/tomcat.pid"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment