【问题标题】:CPU and profiling not supported for remote jvisualvm session远程 jvisualvm 会话不支持 CPU 和分析
【发布时间】:2010-12-17 20:51:25
【问题描述】:

在监控远程应用程序(使用 jstatd)时,我既不能分析也不能监控 CPU 消耗。堆监控(前提是我不使用 G1)有效。 jvisualvm 提供消息“此 JVM 不支持”。在 CPU 图形窗口中。

我的设置中是否缺少任何内容? Google 显示的结果很少。

本地环境(Mac OS X 10.6):

java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)

远程环境(Linux 版本 2.6.16.27-0.9-smp(gcc 版本 4.1.0 (SUSE Linux))):

java version "1.6.0_16" Java(TM) SE
Runtime Environment (build
1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)

本地监控如宣传的那样工作。

【问题讨论】:

    标签: java jmx jvisualvm


    【解决方案1】:

    是不是因为远程版本(虽然稍微)比本地版本大?

    【讨论】:

      【解决方案2】:

      Visual VM 不支持远程分析代码和分配。这很糟糕,但是如果你想启用 CPU 图形,你可以通过启用 JMX 来做到这一点

      -Dcom.sun.management.jmxremote=true
      -Dcom.sun.management.jmxremote.port=12345
      

      您可能还需要根据您的网络添加一些身份验证设置。 JMX 设置将为您提供 CPU 使用率和线程状态,以及执行远程 jstack。

      可在此处找到远程版本的功能列表: Visual VM features

      编辑 获取最新版本的 visual vm 1.2.1 并下载 VisaulVM-Sampler。这将从 JMX 连接中读取以显示分析信息。

      【讨论】:

      • 有效! +1 Visualvm 1.2.1 和插件建议并被接受。
      • 后续:1.6 中的 JMX 默认启用了安全性。对于开发人员可能想要禁用安全性,请参阅java.sun.com/j2se/1.5.0/docs/guide/management/…
      • “Visual VM 不支持远程分析代码和分配” - 从 jvisualvm 1.3.8 开始仍然如此吗?
      • 添加 -Dcom.sun.management.jmxremote.port 对我来说就足够了(IntelliJ + JBoss)。我的虚拟机完全监控选项是:-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Dcom.sun.management.jmxremote=true
      • 我不知道为什么,但我还必须添加-Djava.rmi.server.hostname=localhost
      【解决方案3】:

      连接eclipse java程序。

      第 1 步: 确保您的 Eclipse -> Preferences -> Java -> Installed JREs 指向您启动 visualvm 的同一个 jdk。

      第 2 步:确保右键单击 -> 运行配置具有以下内容

      -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=16001

      第 3 步:重要的是遵循以下建议。

      https://visualvm.java.net/troubleshooting.html#jpswin2

      描述:VisualVM 启动后立即显示一个错误对话框,指出无法监视本地应用程序。本地运行的 Java 应用程序显示为 (pid ###)。

      解决方案:如果用户名包含大写字母,则在 Windows 系统上可能会发生这种情况。在这种情况下,用户名是 UserName,但 JDK 创建的 jvmstat 目录是 %TMP%\hsperfdata_username。要解决此问题,请退出所有 Java 应用程序,删除 %TMP%\hsperfdata_username 目录并创建新的 %TMP%\hsperfdata_UserName 目录。

      也可以试试 JVMMonitor 是一个不错的 Eclipse 独立程序监控插件。

      【讨论】:

        【解决方案4】:

        我可以通过为 JMX 和 RMI 提供相同的端口号来解决此问题。

        -Dcom.sun.management.jmxremote.port=29898 
        -Dcom.sun.management.jmxremote.rmi.port=29898
        

        Why Java opens 3 ports when JMX is configured?

        【讨论】:

          猜你喜欢
          • 2017-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-15
          • 2015-07-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多