使用VisualVM配置Tomcat应用程序

rws*_*mmo 61 visualvm tomcat6

我想用VisualVM工具分析在Tomcat上运行的应用程序.不幸的是,当我告诉VisualVM描述Tomcat时,Tomcat打印出一些消息,表明它正在连接到一个配置文件工具然后只是退出.

细节…

我使用的是Windows XP,Tomcat 6,VisualVM 1.2.1和JDK 1.6.0_11.

  1. 在Visual VM中,我右键单击Tomcat应用程序并选择"配置文件"
  2. 在Profiler选项卡中,我按下Memory按钮(或CPU按钮).
  3. Tomcat退出

请注意,如果我右键单击Tomcat应用程序并选择似乎正常工作的"堆转储".

rws*_*mmo 86

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

-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)

这里是一个很好的文章监测TomcatVisualVM.

  • @Chloe我刚碰到这个.我发现如果我停止Tomcat6服务并将Tomcat6.exe作为命令行应用程序运行,VisualVM就可以作为本地JVM连接到它,并且可以进行内存分析. (4认同)
  • 那不是剖析.那是抽样的.我有一个JMX连接但只有CPU采样可用.如何使用tomcat6.exe获取分析(检测+内存)? (3认同)

vsi*_*ngh 7

是的我们会对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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

删除setenv.shin bin目录后,您可以在启动时看到控制台中的更改.

以下是使用Visual VM分析Tomcat应用程序的另一个分步教程: 使用Visual VM解决应用程序性能问题

  • 你真的不应该使用JAVA_OPTS - 你应该在bin/setenv.sh文件中使用CATALINA_OPTS(你不应该编辑catalina.sh - 它已经为你调用了setenv.sh) (11认同)