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

19-10-12 banq
         

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?。

點擊標題見原文圖

         

一级黄色录像影片 夫妻性生活影片 免费在线观看 一级a做爰片