jdk8提供了jmc工具,应该比visualvm厉害吧
下面贴一份tomcat的配置,自己留个备份,把下面的内容粘贴到tomcat setenv.sh就可以了
nowday=`date +%Y%m%d_%H%M%S` test -d ../gclogs || mkdir ../gclogsif [ -r "$CATALINA_BASE/bin/setenv_custom.sh" ]; then. "$CATALINA_BASE/bin/setenv_custom.sh" elif [ -r "$CATALINA_HOME/bin/setenv_custom.sh" ]; then. "$CATALINA_HOME/bin/setenv_custom.sh" fiif [ -z $CATALINA_HEAP ];thenCATALINA_HEAP="-Xms7g -Xmx7g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=128m" fi if [ -z $CATALINA_STACK ];thenCATALINA_STACK="-Xss1m" fiif [ -z $CATALINA_GC ];thenCATALINA_GC="-XX:MaxTenuringThreshold=4 -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=8 -XX:CMSInitiatingOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent" fiif [ -z $CATALINA_LOG ];thenCATALINA_LOG="-XX:-OmitStackTraceInFastThrow -XX:+PrintFlagsFinal -XX:+PrintCommandLineFlags -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -Xloggc:../gclogs/gc.log.$nowday" fiif [ -z $CATALINA_COMPILER ];thenCATALINA_COMPILER="-XX:CICompilerCount=6" fiif [[ ! -z "$JMX_PORT" && ! -z "$JMX_HOST" ]]; thenCATALINA_EXTRA="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=${JMX_HOST} -Dcom.sun.management.jmxremote.rmi.port=${JMX_PORT}"if [[ ! -z "$JMX_LOGIN" ]]; thenarr=(${JMX_LOGIN//:/ })JMX_USER=${arr[0]}JMX_PASS=${arr[1]}echo "$JMX_USER readwrite create com.sun.management.*,com.oracle.jrockit.* unregister" >> ../conf/jmxremote.accessecho "$JMX_USER $JMX_PASS" >> ../conf/jmxremote.passwordchmod 400 ../conf/jmxremote.access ../conf/jmxremote.passwordCATALINA_EXTRA+=" -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access "elseCATALINA_EXTRA+=" -Dcom.sun.management.jmxremote.authenticate=false"fi fiif [[ ! -z "$JFR" ]];thenCATALINA_EXTRA+=" -XX:+UnlockCommercialFeatures -XX:+FlightRecorder" fiif [ -z $CATALINA_OPTS ]; thenCATALINA_OPTS="$CATALINA_EXTRA $CATALINA_HEAP $CATALINA_STACK $CATALINA_GC -server $CATALINA_LOG $CATALINA_COMPILER" fiJPDA_ADDRESS=8787 JPDA_SUSPEND=necho "using catalina jvm flags:$CATALINA_OPTS"
脚本里的变量设置环境变量就可以了,其实是为了docker-compose启动方便配置