61

我想使用 VisualVM 工具分析在 Tomcat 上运行的应用程序。不幸的是,当我告诉 VisualVM 分析 Tomcat 时,Tomcat 会打印出几条消息,表明它正在连接到分析工具,然后就退出了。

详情……</p>

我正在使用 Windows XP、Tomcat 6、VisualVM 1.2.1 和 JDK 1.6.0_11。

  1. 在 Visual VM 中,我右键单击 Tomcat 应用程序并选择“Profile”</li>
  2. 在 Profiler 选项卡中,我按下 Memory 按钮(或 CPU 按钮)。
  3. Tomcat 退出

请注意,如果我右键单击 Tomcat 应用程序并选择“Heap Dump”,这似乎可以正常工作。

4

4 回答 4

87

我现在VisualVM正在使用我的Tomcat应用程序进行分析。我需要在 tomcat 启动中添加以下参数:

-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

这是一篇关于Tomcat使用VisualVM.

于 2009-12-16T16:27:58.353 回答
7

是的,我们会分析 Tomcat 应用程序。

转到catalina.batorcatalina.sh和 this 到您的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。缺少其他一些设置,但很好开始。

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.shbin 目录后,您可以在启动时在控制台中看到更改。

这是使用 Visual VM 分析 Tomcat 应用程序的另一个分步教程:使用 Visual VM 对 应用程序性能进行故障排除

于 2011-09-19T14:37:05.220 回答
1

我正在使用 Tomcat 7,完整配置需要更多参数才能工作。

-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/

于 2016-05-04T09:45:37.060 回答
0

您需要做的就是设置这些 VM 选项:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:FlightRecorderOptions=stackdepth=512

于 2017-04-15T19:52:14.757 回答