(不使用命令行)
本博客文章假设您对 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 的性能概况。