Blog chevron_right 未分类

远程记录容器中的 JFR 日志

Remotely Record a JFR Log from a Container

(不使用命令行)

本博客文章假设您对 Java 虚拟机和 Java Flight Recorder (JFR) 以及 JFR 日志有一定了解。为了充分利用本文,请确保已经安装并准备好运行 Azul Mission Control

Java Flight Recorder (JFR) 是用于记录和查看 JVM 和系统指标的首选技术。JFR 日志可揭示关于正在运行的应用程序、JVM 运行状况以及系统稳定性的大量信息。您只需进入命令行/终端并输入一些命令,即可轻松访问 JFR 日志。但是,如果您无法在运行 JVM 的系统中直接访问命令行或终端(比如 JVM 在容器中运行的情况),该怎么办?不用担心。在这份快速指南中,您将学习如何使用最少的配置,通过 JVM 的 JMX 连接器和 Azul Mission Control 获取 JDR 日志。

在 JVM 中设置 JMX

您必须将 JVM 设置为可通过远程连接发现和访问,然后才可以从命令行/终端之外访问 JVM。您只需启用 JVM 的 JMX 连接器,即可实现这一点。请使用以下 VM 参数配置您的 Java 应用程序:

  • -Dcom.sun.management.jmxremote: 启用 JMX/JMXRMI 连接。
  • -Dcom.sun.management.jmxremote.host=<IP/Hostname>: 设置 JMX 连接的地址。使用运行 Java 程序的计算机或容器的外部 IP 地址或主机名。
  • -Dcom.sun.management.jmxremote.port=<port>: 设置 JMX 连接的 TCP 端口。
  • -Djava.rmi.server.hostname=<IP/hostname>: 设置 JMXRMI 连接的地址。使用用于 JMX 连接的相同 IP/主机名。
  • -Dcom.sun.management.jmxremote.rmi.port=<port>: 设置 JMXRMI 连接的 TCP 端口。使用用于 JMX 连接的相同 TCP 端口。
  • -Dcom.sun.management.jmxremote.local.only=false: 如果您从不同的机器连接到 JVM,则必须从本地主机取消绑定端口。
  • • 此外,您可能需要使用以下参数启用 JMX 身份验证/SSL:
    • ‑Dcom.sun.management.jmxremote.authenticate=true
    • -Dcom.sun.management.jmxremote.ssl=true

例如:

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.host=192.168.0.166 \
-Dcom.sun.management.jmxremote.port=7091 \
-Djava.rmi.server.hostname=192.168.0.166 \
-Dcom.sun.management.jmxremote.rmi.port=7091 \
-Dcom.sun.management.jmxremote.local.only=false \
‑Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \

使用 Azul Mission Control 连接到远程 JVM

如果您还没有安装 Azul Mission Control,请前往 Azul Mission Control 下载页面

在 Azul Mission Control 中,转到 JVM 浏览器,然后点击添加 JVM 连接按钮,创建新的自定义 JVM 连接。

指定远程系统的主机名/IP 地址和 JMX 端口号。

如果启用了 JMX 身份验证,请输入用户名和密码。

点击测试连接,确保可以访问您的远程 JVM,然后点击完成

您的远程 JVM 现在显示在 JVM 浏览器中。

根据您的网络和容器设置,可能需要设置端口转发。如果您需要端口转发方面的帮助,请联系您的网络管理员。

从远程 JVM 记录 JFR

现在,您已经远程连接到了 JVM,是时候进行 JFR 录制了。

在 Azul Mission Control 中,转到 JDK 浏览器,右键点击您的远程 JVM 连接,然后选择开始 Flight 记录

选择您偏好的选项和时间间隔(固定时间记录,或者根据 JFR 日志的大小和/或存在时间进行持续记录),然后点击完成

您的远程 JFR 记录已开始。快要完成了!

通过在 JVM 浏览器中展开远程 JVM 连接,查看记录进度。

记录完成后,您的 JFR 日志会在 Azul Mission Control 中自动打开。现在,您可以检查“大纲”选项卡,更深入地了解 JVM 的性能概况。