VisualVM中的JDK Flight Recorder支援 - Jiří Sedláček
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 。
點選標題見原文圖
相關文章
- [轉帖]Get started with JDK Flight Recorder in OpenJDK 8uJDK
- Java中用Flight Recorder監控Hibernate事件Java事件
- 使用JDK自帶的VisualVM進行Java程式的效能分析JDKLVMJava
- VisualVM第一章-VisualVM的下載和使用LVM
- EK求最大流
- SQL Server中In-Flight日誌究竟有多大SQLServer
- VisualVM 外掛地址LVM
- 沒什麼技術含量的Remove Before FlightREM
- VisualVM第二章-ThreadsLVMthread
- MSE標籤路由支援JDK 11嗎?路由JDK
- vscode-di-ji-kuai-su-pei-zhiVSCodeAI
- 效能測試之JVM的故障分析工具VisualVMJVMLVM
- 深入調查 Angler 漏洞攻擊工具(EK)
- 使用VisualVM進行Java應用的效能測量LVMJava
- Java 中JDK7時間類與JDK8中的時間類JavaJDK
- 亞馬遜推出具有長期支援的免費JDK版本亞馬遜JDK
- 提升並行資料倉儲的投資回報率EK並行
- 無法連線java visualvm外掛中心JavaLVM
- JDK8中的並行流JDK並行
- JDK 24:Java 24 中的新特性JDKJava
- JDK中自帶的JVM分析工具JDKJVM
- JConsole、VisualVM 依賴的 JMX 技術到底是什麼LVM
- 轉載ORA-01591錯誤故障處理(ji)
- 如何規劃一個高效的BI資料倉儲專案JI
- 如何在eclipse中的maven中永久修改jdk的版本號EclipseMavenJDK
- 那些jdk中坑你沒商量的方法JDK
- JDK 17:Java 17 中的新特性 - InfoWorldJDKJava
- itop screen recorder,螢幕錄影
- 使用JDK16支援的Loom虛擬執行緒的代價 – WebtideJDKOOM執行緒WebIDE
- MAC中安裝JDK、MavenMacJDKMaven
- Linux中檢視yum安裝的jdk位置LinuxJDK
- JDK1.8中Lambda表示式的應用JDK
- JDK原始碼中的一些“小技巧”JDK原始碼
- 設計模式(三)——JDK中的那些單例設計模式JDK單例
- flight-tracker-demo:一個Quarkus + Kafka演示原始碼專案Kafka原始碼
- Appdash原始碼閱讀——Recorder與CollectorAPP原始碼
- Aimersoft Music Recorder for mac 錄音軟體AIMac
- Undo 釋出用於 Linux 除錯的 Live Recorder 5.0Linux除錯