Edd*_*die 6 java monitoring tomcat visualvm
我仔细检查过以下内容:
有了这一切,我确实在jvisualvm的"Local"列表中看到了我的Tomcat进程.它显示为"<未知应用程序>(pid 5644)".如果我双击它,则每个选项卡都显示"此JVM不支持".但是,VisualVM显示在"Local"中,并且所有选项卡都适用于它,显然使用相同的JVM实例.没有明显的方法可以将JMX连接添加到"<Unknown Application>"实例.
我确实在"Local"中看到Tomcat的JMX实例为"localhost :(我的端口号)",这样可行,但Visual GC选项卡显示"此JVM不支持",我认为这意味着Visual GC不会通过JMX工作.
我究竟做错了什么?我试过启动jstatd.它没有任何区别.当我启动jstatd时,visualvm会看到"Local""jstatd",但是当我双击它时,它似乎只是监视jstatd进程而不是任何其他Java进程.
注意:我决定尝试运行Tomcat而不是作为服务,而是直接在CMD窗口中运行,而中提琴,现在visualvm完美运行.当我运行"jps"并得到投诉"进程信息不可用"时,我想我会尝试这一点,并用Google搜索并发现有人说他们在运行任何Java应用程序作为服务时都得到了这个.这有助于测试平台,但无助于弄清楚如何监控生产系统.
这是在Windows Server 2003上的Tanuki包装器下作为Windows服务运行的Tomcat.
从您的描述中可以清楚地看出,Jvmstat已损坏。Jvmstat 由 Visual GC、jps 和 VisualVM 使用。您在“本地”节点下看到 Tomcat 为无法识别的应用程序的原因意味着 VisualVM 检测到(通过 jvmstat)正在运行 Java 应用程序,但无法获取有关它的任何数据。这可能与您将 Tomcat 作为 Windows 服务运行这一事实有关。您可以尝试退出所有java应用程序并删除位于%TMP%目录中的hsperfdata_{your_user_name}目录,然后重新启动Tomcat和VisualVM。如果 Tomcat 在“Local”节点下被正确识别,Visual GC 也将工作。如果失败,请启动 Tomcat 并运行 jps:
jps -J-Djps.debug=true -J-Djps.printStackTrace=true
Run Code Online (Sandbox Code Playgroud)
并发布输出。这可以向我们展示为什么 jvmstat 无法从 Tomcat 读取信息。