我已经仔细检查了以下内容:
- 我在运行 Tomcat 的同一个盒子上运行 jvisualvm。
- 这是 Java 6u19。
- 我的 Tomcat 服务以我登录的同一用户身份运行。
- 我的 Tomcat 服务使用与我使用 jvisualvm 完全相同的 JVM 目录。
- Tomcat 在特定端口上启用了 JMX,但我认为这对我没有帮助。
有了这一切,我确实在 jvisualvm 的“本地”列表中看到了我的 Tomcat 进程。它显示为“<Unknown Application> (pid 5644)”。如果我双击它,那么每个选项卡都会显示“此 JVM 不支持”。但是,VisualVM 显示在“本地”中,并且所有选项卡都适用于它,显然使用相同的 JVM 实例。没有明显的方法可以将 JMX 连接添加到“<Unknown Application>”实例。
我确实在“本地”中看到 Tomcat 的 JMX 实例为“localhost:(我的端口号)”,这是可行的,但是 Visual GC 选项卡显示“不支持此 JVM”,我认为这意味着 Visual GC 不通过 JMX 工作。
我究竟做错了什么?我试过启动 jstatd。它没有任何区别。当我启动 jstatd 时,visualvm 会看到一个“本地”“jstatd”,但是当我双击它时,它似乎只是监视该 jstatd 进程而不是任何其他 Java 进程。
注意:我决定尝试不将 Tomcat 作为服务运行,而是直接在 CMD 窗口中运行,中提琴,现在 visualvm 可以完美运行。当我运行“jps”并收到投诉“处理信息不可用”时,我想我会尝试这个,然后用谷歌搜索,发现有人说他们在运行任何 Java 应用程序作为服务时得到了这个。这有助于测试平台,但无助于弄清楚如何监控生产系统。
这是在 Windows Server 2003 上的 Tanuki 包装器下作为 Windows 服务运行的 Tomcat。