3.3. Java Flight Recorder
3.3.1. 关于 Java Flight Recorder 复制链接链接已复制到粘贴板!
Oracle JDK Mission Control 用户指南 将 Java Flight Recorder (JFR)描述为"profiling and event collection framework"。开发人员可以将 JFR 与 JDK Mission Control (JMC)搭配使用,以收集有关 Java 虚拟机(JVM)和其他 Java 应用程序的数据。开发人员可以使用这些数据来识别和修复性能问题。
JFR 经过仔细设计,因此需要低程度的开销(消耗资源)。这意味着,JFR 分析可在某些生产环境中持续运行,且影响最小。开发人员可以使用 JFR 和 JMC 在事件后快速分析运行时信息。
JFR 由 Java OpenJDK 8u262 或更高版本提供,作为 Java Diagnostic Command Tool 的一部分。
3.3.2. Java Flight Recorder 分析配置 复制链接链接已复制到粘贴板!
开发人员可以修改性能分析配置,以自定义 Java Flight Recorder (JFR)的实例。JFR 提供两个不同的性能分析配置:
-
默认:提供稀疏信息抽样 ; 低性能分析详情 -
配置集:提供更全面的信息抽样;中文性能分析详细信息
开发人员可以修改任何配置文件,以启用额外的事件指标抽样。
3.3.3. 启用 Java Flight Recorder 配置文件捕获 复制链接链接已复制到粘贴板!
开发人员可以使用 Java Flight Recorder (JFR)在裸机或 Red Hat OpenShift Container Platform 上对 JBoss EAP 安装进行性能分析。
要了解在 OpenShift 中使用 JFR 的信息,请参阅对 Cryostat:容器的 JDK Flight Recorder 简介。
3.3.3.1. 在裸机上启用 Java Flight Recorder 分析 复制链接链接已复制到粘贴板!
开发人员可以使用命令行或 Java Mission Control (JMC)桌面应用程序启动 Java Flight Recorder (JFR)配置集。
您可以使用配置标志在 Java 虚拟机(JVM)上使用 JBoss EAP 配置 Java Flight Recorder (JFR)分析。
JVM 配置示例
-XX:StartFlightRecording=delay=15s,duration=60s,name=jboss-eap-profile, filename=C:\TEMP\jboss-eap-profile.jfr,settings=default
-XX:StartFlightRecording=delay=15s,duration=60s,name=jboss-eap-profile, filename=C:\TEMP\jboss-eap-profile.jfr,settings=default
通过 StartFlightRecording=delay 配置标志,您可以在启动性能分析会话前设置 JVM 引导后等待的时间 JFR。在前面的示例中,StartFlightRecording=delay 设置为 15 秒,这意味着性能分析将在 15 秒延迟后启动。
持续时间 配置标志允许您设置每个性能分析会话的时间长度。在前面的示例中,持续时间 设置为 60 秒。
name 配置标志允许您在内存配置集名称中设置。在本例中,内存配置文件名称设置为 jboss-eap-profile。
filename 配置标志允许您设置要保存文件的文件名和路径。在本例中,filename 设置为 C:\TEMP\jboss-eap-profile.jfr。
通过设置 配置标志,您可以选择性能分析配置。在本例中 , 设置为默认。请注意,配置集配置的文件扩展已被排除。
分析会话完成后,将在 filename 选项定义的文件路径上创建文件。
3.3.3.3. 使用 Java 命令工具对正在运行的 JBoss EAP Java 虚拟机进行性能分析 复制链接链接已复制到粘贴板!
您可以使用 Java Flight Recorder (JFR) JFR.start 命令配置正在运行的 JBoss EAP Java 虚拟机(JVM)以使用 Java 命令工具 jcmd 进行性能分析。
流程
使用以下命令之一:
对于 Linux 操作系统:
jcmd <PID> JFR.start duration=TIME filename=path/to/YOUR_PROFILE_NAME.jfr
$ jcmd <PID> JFR.start duration=TIME filename=path/to/YOUR_PROFILE_NAME.jfrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
用于 Linux 的
JFR.start命令jcmd <PID> JFR.start duration=60s filename=/tmp/jboss-eap-profile.jfr
$ jcmd <PID> JFR.start duration=60s filename=/tmp/jboss-eap-profile.jfrCopy to Clipboard Copied! Toggle word wrap Toggle overflow JFR 分析会话启动后,您将收到以下确认消息:
jcmd <PID> JFR.start duration=60s filename=/tmp/jboss-eap-profile.jfr
$ jcmd <PID> JFR.start duration=60s filename=/tmp/jboss-eap-profile.jfr <PID>: Started recording 1. The result will be written to: /tmp/jboss-eap-profile.jfrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows 操作系统:
> jcmd.exe <PID> JFR.start duration=TIME filename=path/to/YOUR_PROFILE_NAME.jfr
> jcmd.exe <PID> JFR.start duration=TIME filename=path/to/YOUR_PROFILE_NAME.jfrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
用于 Windows 的
JFR.start命令示例> jcmd.exe <PID> JFR.start duration=60s filename=C:\TEMP\jboss-eap-profile.jfr
> jcmd.exe <PID> JFR.start duration=60s filename=C:\TEMP\jboss-eap-profile.jfrCopy to Clipboard Copied! Toggle word wrap Toggle overflow JFR 分析会话启动后,您将收到以下确认消息:
> jcmd.exe <PID> JFR.start duration=60s filename=C:\TEMP\jboss-eap-profile.jfr <PID>: Started recording 1. The result will be written to: C:\TEMP\jboss-eap-profile.jfr
> jcmd.exe <PID> JFR.start duration=60s filename=C:\TEMP\jboss-eap-profile.jfr <PID>: Started recording 1. The result will be written to: C:\TEMP\jboss-eap-profile.jfrCopy to Clipboard Copied! Toggle word wrap Toggle overflow
duration 选项允许您设置每个性能分析会话的时间长度。在前面的示例命令中,持续时间 设置为 60 秒。
filename 选项允许您设置要保存该文件的文件名和路径。在前面的示例命令中,在 Linux 示例中将 filename 设置为 /tmp/jboss-eap-profile.jfr,在 Windows 示例中为 C:\TEMP\jboss-eap-profile.jfr。
3.3.3.4. 使用 Java Mission Control 连接本地 Java 虚拟机 复制链接链接已复制到粘贴板!
您可以使用 Java Mission Control (JMC)连接在与 JMC 实例相同的服务器上运行的本地 Java 虚拟机(JVM)。
先决条件
- 配置了 JBoss EAP 库的 Java Mission Control。具体步骤请查看 如何远程连接 Java Mission Control?
-
JBoss EAP 被配置为远程监控连接,并且在
ApplicationRealm中创建用于监控的用户。
流程
- Open Java Mission Control。
- 在 JVM 浏览器 窗格中,选择 JVM to profile。
展开 JVM 的下拉菜单,以显示 Flight Recorder 项。
右键单击 Flight Recorder 打开子菜单,选择 Start Flight Recording…。
图 3.1. JMC 中的 JVM 浏览器
在 Start Flight Recording 窗口中,配置选项用于性能分析。
图 3.2. JVM 分析设置
单击 Next 以了解详细的低级别设置。
图 3.3. JVM 分析高级设置
- 单击 Finish 以开始性能分析。
3.3.3.5. 使用 Java Mission Control 连接远程 Java 虚拟机 复制链接链接已复制到粘贴板!
您可以使用 Java Mission Control (JMC)连接到远程 Java 虚拟机(JVM)配置集。
先决条件
- 使用 JBoss EAP 库配置 Java Mission Control。具体步骤请查看 如何远程连接 Java Mission Control?
-
配置 JBoss EAP 以进行远程监控连接,并在
ApplicationRealm中创建用于监控的用户。
流程
- Open Java Mission Control。
- 在 File 菜单中,选择 Connect。
在 Connect 窗口中,选择 Create a new connection,然后单击 Next。
图 3.4. JMC 中的连接窗口
在 JVM 连接 窗口中,完成要配置文件的远程 JBoss EAP JVM 的详细信息。
图 3.5. JMC 中的 JVM 连接详情
- 在 Host 字段中,添加您的主机名或 IP 地址。
- 在 Port 字段中,添加您的端口号。
-
在 User 字段中,添加您在
ApplicationRealm中创建的用户。 -
在 Password 字段中,添加在
ApplicationRealm中创建的密码。 - 可选 要将凭据存储在设置文件中,请点击在设置文件 中存储凭据 旁边的复选框。
点 Custom JMX Service URL 覆盖默认设置。
图 3.6. 用于 JVM 连接的 JMX 服务 URL
更改 JMX 服务 URL 以定义 JBoss 远程协议。
service:jmx:remote+http://<host>:9990
service:jmx:remote+http://<host>:9990Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Test connection 验证您的设置。
- 点 Finish 保存您的设置。
这时将显示 JMXRMI Preferences 未设置 警告信息。
图 3.7. JMXRMI 首选项警告信息
- 单击 OK 以接受连接尝试。
在 JVM 浏览器 窗格中,选择 JVM to profile。
- 展开 JVM 的下拉菜单,以显示 Flight Recorder 项。
右键单击 Flight Recorder 打开子菜单,然后选择 Start Flight Recording…。
图 3.8. 使用 JMC 配置集菜单连接远程 JVM
在 Start Flight Recording 窗口中,配置选项用于性能分析。
图 3.9. JVM 分析设置
单击 Next 以了解详细的低级别设置。
图 3.10. JVM 分析高级设置
- 单击 Finish 以开始性能分析。