使用VisualVMconfigurationTomcat应用程序
我想通过VisualVM工具来分析在Tomcat上运行的应用程序。 不幸的是,当我告诉VisualVM分析Tomcat时,Tomcat会输出一些消息,指出它正在连接到一个configuration文件工具,然后退出。
细节…
我正在使用Windows XP,Tomcat 6,VisualVM 1.2.1和JDK 1.6.0_11。
- 在Visual VM中,我右键单击Tomcat应用程序并select“Profile”
- 在Profiler选项卡中,按存储器button(或CPUbutton)。
- Tomcat退出
请注意,如果我右键单击Tomcat应用程序并select“堆转储”似乎工作正常。
我现在使用VisualVM
分析与我的Tomcat
应用程序一起工作。 我需要添加以下参数到tomcat启动:
-Dcom.sun.management.jmxremote.port=8086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
这里有一篇关于用VisualVM
监视Tomcat
的好文章 。
是的,我们configuration了Tomcat应用程序。
转到catalina.bat
或catalina.sh
,这对你的JAVA_OPTS
(我使用Tomcat 6.0.16):
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
你的JAVA_OPTS
应该看起来像
set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Ryan评论说,更新后使用setenv.sh
更好。 这是我的setenv.sh
JDK 8.缺less其他一些设置,但很好开始。
SUN_JVM_OPTS=" -server \ -XX:MaxMetaspaceSize=3G \ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \ -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \ -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark \ -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=2M \ -XX:+HeapDumpOnOutOfMemoryError \ -Dsun.net.inetaddr.ttl=60 \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=8480 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false" # Set custom application options here APPLICATION_OPTS="-Dlog4j.configurationFile=patht-to-log/log4j2.xml -Dlog4j.debug=true " JVM_OPTS="$GENERAL_JVM_OPTS $SUN_JVM_OPTS" CATALINA_OPTS="$JVM_OPTS $APPLICATION_OPTS" echo "Tomcat started with settings "$CATALINA_OPTS
一旦将setenv.sh
放入bin目录,就可以在启动时看到控制台中的更改。
下面是另一个一步一步的教程,用Visual VM剖析Tomcat应用程序:使用Visual VM解决应用程序性能问题
我正在使用Tomcat 7,完整的configuration需要更多的参数来工作。
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 # port to connect JMX -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=50.112.22.47" # IP of the server running tomcat (it is necessary)
来源: http : //blog.markshead.com/1129/connecting-visual-vm-to-tomcat-7/
所有你需要做的就是设置这些VM选项:
-XX:+ UnlockCommercialFeatures -XX:+ FlightRecorder -XX:+ UnlockDiagnosticVMOptions -XX:+ DebugNonSafepoints -XX:FlightRecorderOptions = stackdepth = 512