gpt4 book ai didi

java - 使用 JMC 命令行选项从当前系统记录远程 Docker 上的应用程序事件

转载 作者:行者123 更新时间:2023-12-01 21:48:28 25 4
gpt4 key购买 nike

基本上我想从我当前的系统 JMC 记录在 docker 上运行的应用程序事件(JFR 数据)。

遵循的步骤:

  1. 在我的 Docker 服务上启用了 JFR 端口。
  2. 已验证我是否能够从当前系统访问 docker 服务的 JMS 端口并且它工作正常。
  3. 当我尝试从 JMC 应用程序记录应用程序事件时,我在转储上获得了正确的数据,但是当我尝试使用命令行选项执行相同操作时,我没有获得正确的转储。
  4. 作为项目的一部分,我们确实有一个批处理文件,它在内部调用应用程序事件。我创建了一个本地 jar 文件,它将调用批处理文件并在该 jar 文件上运行 JFR 命令行选项,但我仍然没有获得正确的信息。在转储文件上。

有人提供任何建议吗?

最佳答案

当使用命令行选项,即-XX:StartFlightRecording:filename=dump.jfr(JDK 11语法)时,您需要指定允许写入文件的目录。默认情况下,它是 JVM 进程启动的目录。

如果您指的是使用命令行工具,即 jcmd JFR.dump filename=dump.jfr,则在附加到 Docker 容器中的 JVM 时会出现问题。 “jcmd”工具找不到附加到容器中进程所需的文件所在的正确/tmp 目录。请参阅https://bugs.openjdk.java.net/browse/JDK-8228343

JMC通过JMX传输/tmp目录中的录音数据,因此可以避免该问题。您可以编写一个 Java 程序,使用以下方式以编程方式转储。 FlightRecorderMXBean

关于java - 使用 JMC 命令行选项从当前系统记录远程 Docker 上的应用程序事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com