6

VisualVM中的JDK Flight Recorder支持 - Jiří Sedláček

 8 months ago
source link: https://www.jdon.com/53255.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

VisualVM中的JDK Flight Recorder支持

JDK Flight Recorder支持的预览版已作为与GraalVM 19.2捆绑在一起的VisualVM工具的插件发布。该插件读取从Java 7和更高版本创建的所有JFR快照,并以工具用户熟悉的典型VisualVM视图显示数据。
JDK Flight Recorder(JFR,以前是Java Flight Recorder)是用于收集有关正在运行的Java应用程序的诊断和性能分析数据的工具。它已集成到Java虚拟机(JVM)中,几乎没有性能开销,因此,即使在负载很大的生产环境中也可以使用它。
界面功能描述:

  • 概述选项卡Overview tab 显示有关记录的进程的基本信息,例如其主类,参数,JVM版本和配置以及系统属性。此选项卡还提供对记录的线程转储的访问。
  • “监视器”选项卡Monitor tab 显示进程的正常运行时间和基本遥测-CPU使用率,堆和元空间利用率,已加载类的数量以及活动和启动的线程数。
  • “线程”选项卡Threads tab基于记录配置,根据快照中记录的所有事件尽可能精确地重建线程时间线。
  • “锁定”选项卡Locks tab允许分析线程同步。
  • “文件IO”选项卡显示有关对文件系统的读写事件的信息。
  • 套接字Socket IO选项卡显示有关对网络的读写事件的信息。
  • “采样器Sampler ”选项卡显示每个线程的CPU使用率和内存分配,以及堆直方图。还有一个实验功能“ CPU采样器”,可从记录的事件中构建CPU快照。它没有提供精确的性能分析,但仍有助于了解记录的应用程序中发生了什么以及CPU瓶颈可能在哪里。
  • “浏览器Browser ”选项卡提供了快照中记录的所有事件的通用浏览器。
  • “环境Environment ”选项卡概述了记录机器的设置和条件,例如CPU型号,内存大小,操作系统版本,CPU利用率,内存使用率等。
  • 记录Recording选项卡列出了记录设置和基本快照遥测,例如事件数,总记录时间等。

预览版中不提供某些高级功能,如分析JVM内部,显示事件堆栈跟踪或支持从实时进程创建JFR快照,这些功能将在预览版本中逐步解决。

要安装JFR支持,请从https://www.graalvm.org下载GraalVM 19.2或更高版本,安装并运行<GRAALVM_HOME>/bin/jvisualvm以启动VisualVM。使用工具| 插件| 可用插件列出所有可用插件并安装VisualVM-JFR和VisualVM-JFR-Generic模块。可以使用文件|文件管理器打开JFR快照。加载...操作或通过双击“ JFR快照”节点并将快照永久添加到JFR存储库中。

请按照您的Java版本的文档来创建JFR快照。对于GraalVM Enterprise,可以通过在java命令中添加以下参数来创建JFR快照:

<GRAALVM_HOME>/bin/java -XX:+UnlockCommercialFeatures 
-XX:StartFlightRecording=duration=10s,filename=filename.jfr -jar ...

请注意,由于底层的OpenJDK 8不支持在GraalVM 19.2 CE中创建JFR快照,因此不可用。您可以使用OpenJDK 11和更高版本来创建JFR快照:

<OPENJDK11_HOME>/bin/java -XX:StartFlightRecording=duration=10s,filename=filename.jfr -jar ...

如果您想在Java应用程序上对其进行测试,但没有自己喜欢的工具,可以尝试使用Spring Petclinic示例Web应用程序

git clone https://github.com/spring-projects/spring-petclinic.git
mvn clean package -DskipTests=true
# verify it works: 
<GRAALVM_HOME>/bin/java -jar target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar

这将启动示例应用程序,并使其在localhost:8080上可用。
现在,您只需要在命令中添加上面的命令行选项,javaFlight Recorder就会收集分析信息。

<GRAALVM_HOME>/bin/java -XX:+UnlockCommercialFeatures -XX:StartFlightRecording=dumponexit=true,filename=petclinic.jfr -jar target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar

请注意在dumponexit=true应用程序运行结束时用于填充文件的命令,另一种选择是指定记录的持续时间。
打开应用程序并单击,或者如果您有负载生成工具(例如wrk),则可以使用它来生成示例工作负载以获取更有意义的配置文件。例如,以下命令将对正在运行的应用程序中的网页之一施加负载30秒。

wrk -d30s -R2000 http://localhost:8080/owners\?lastName\=

停止应用程序,确认petclinic.jfr文件存在,然后如上所述将其加载到VisualVM中。
您现在可以从VisualVM调查JFR记录有关您的应用程序的日期。

请注意,JFR记录是进行性能分析的最佳工具之一,如果您希望GraalVM Enterprise更好地处理工作负载,则可以与GraalVM团队联系,例如在GitHub上,我们将尝试调查是否有优化的机会。
感谢您对VisualVM中的JFR支持的反馈-请让我们知道您希望在下一版本中看到哪些功能!将您的评论留在本文下方或http://visualvm.github.io/feedback.html,或在https://github.com/oracle/visualvm/issues提交RFE / bug 。

点击标题见原文图


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK