JVM(和Spark)性能優化:使用Java Mission Control (1)

      網友投稿 1105 2025-04-02

      在大數據分析或其它業務處理中,你是否碰到過作業停滯、卡住等響應性問題呢?或者每隔1~2小時就有7~8秒的停頓時間而你的機器有48 cores和128GB RAM呢?或者內存占用過大(也不確定是否有內存泄露),甚至碰到過如下錯誤呢?


      –‘Out of Memory’ (OOM)

      – ‘Error: Java Heap Space’

      – ‘GC overhead limit exceeded’

      Java有許多排錯、性能分析、監控和管理工具(Troubleshooting, Profiling, Monitoring and Management Tools),可以讓應用程序運行得飛快且穩定。包括:

      Jcmd – JVM診斷(Diagnostic)命令工具

      Jconsole – JMX兼容的圖形工具監控Java應用程序

      Jvisiualvm – 提供應用程序的細節信息。有CPU & 內存性能,堆轉儲分析,內存泄漏檢測等

      Jmc(Java Mission Control) – 監控和管理應用程序的工具并且沒有性能開銷(小于1%)。10年前最常見的性能優化工具Test and Performance Tools Platform (TPTP) ,啟動后應用程序都跑不動,使用非常痛苦。JMC應該是現在每個Java專家和性能架構師都應該掌握的新工具和方法!邁向基于“性能數據驅動的開發”。

      還有其它一些小工具

      監控工具:

      Jps – JVM進程狀態工具

      Jstat – JVM統計監控工具

      排錯工具:

      Jmap - Java內存映射

      Jhat – 堆轉儲瀏覽器

      Jstack – Java堆棧跟蹤

      Java Mission Control(JMC)是什么呢?

      是一組功能強大的工具集運行于Oracle JDK上,用來監控和管理Java應用程序。

      開發時可免費使用(Oracle Binary Code License),但在生產環境需要購買。

      支持插件;目前集成有兩種工具:JMX控制臺和Java 飛行記錄器。

      在$JAVA_HOME/bin運行jmc命令啟動。可以運行于Eclipse。

      在JDK 7u40+和JDK 8中,自帶了個新的監控和診斷工具Java Mission Control(JMC),它功能強大,全新的圖形界面能清晰地監控和診斷Java虛擬機的方方面面,尤其是JMC中的Java Flight Record(Java 飛行記錄器JFR),也是本文重點介紹的。

      使用Java Discovery Protocol (JDP)來瀏覽JVM。允許列出本地或遠程運行的Java程序并連接它們。提供了加密通信。

      一種工具,通過JMX接口監控和管理多個Oracle JVM實例。可以捕獲和表示實時數據(live data),包括:

      垃圾收集(GC)暫停

      內存(堆使用)

      其它通過MBean暴露的屬性

      Java 飛行記錄器 (JFR) ,類似于飛機上的黑匣子。是一個用于收集有關正在運行的 Java 應用程序的診斷數據和概要分析數據的工具。它集成到 Java 虛擬機 (JVM) 中,幾乎不會帶來性能開銷,因此甚至可以在高負載生產環境中使用。使用默認設置時,內部測試和客戶反饋表明性能影響低于 1%。對于一些應用程序,這一數字會大幅降低。但是,對于短時間運行的應用程序 (不是在生產環境中運行的應用程序類型),相對的啟動和預熱時間可能會較長,這對性能的影響可能會超過 1%。JFR 收集有關 JVM 及其上運行的 Java 應用程序的數據。

      與其他類似工具相比,JFR 具有以下優勢:

      提供更好的數據:JFR 使用的相關數據模型使其易于交叉引用和過濾事件。

      允許使用第三方事件提供程序:JFR 通過一組 API 監視第三方應用程序,包括 WebLogic Server 和其他 Oracle 產品。

      降低總體成本:使用 JFR 可以縮短在診斷問題和排除問題方面所花的時間、減少運營成本和業務中斷、在出現問題時能夠更快地予以解決,并且可以提高系統效率。

      JFR 主要用于:

      概要分析

      JFR 連續保存有關正在運行的系統的大量數據。此概要分析信息包括線程樣本 (其中顯示程序在什么地方占用了時間)、鎖概要文件以及垃圾收集詳細信息。

      黑匣子分析

      JFR 將信息連續保存到循環緩沖區。可在檢測到異常時評估此信息以查找原因。

      本文使用的是JMC 5.4,集成在JDK 7u75和8u20中。JMC 5.5將集成在8U40中,6.0正在開發中,預計集成在JDK 9中。

      JFR 從 JVM (通過內部 API) 和 Java 應用程序 (通過 JFR API) 收 集數據。此數據存儲在小型線程本地的緩沖區中,這些緩沖區會刷新到內存中的全局緩沖區。接下來,內存中的全局緩沖區內的數據將寫入到磁盤。磁盤寫入操作開 銷很高,因此應該仔細選擇需要啟用記錄的事件數據,盡可能地減少寫入操作。二進制格式的記錄文件非常緊湊,應用程序可以高效地讀取和寫入。

      不同緩沖區之間沒有信息重疊。具體數據塊將只在內存或磁盤上可用,但永遠不會同時在兩處可用。這樣會有以下隱患:

      · 在出現電源故障后,尚未刷新到磁盤緩沖區的數據將不可用。

      · JVM 崩潰會導致一些數據在核心文件中 (即內存中緩沖區),而另一些數據在磁盤緩沖區中。JFR 不提供合并這些緩沖區的功能。

      · JFR 收集的數據在對您可用之前,可能略有延遲 (例如,數據需要移動到其他緩沖區才能變得可見時)。

      · 記錄文件中的數據可能未按時間順序排列,因為數據是從多個線程緩沖區以數據塊的形式收集的。

      在某些情況下,JVM 會丟棄事件順序以確保不會崩潰。任何無法快速寫入磁盤的數據將會放棄。發生這種情況時,記錄文件中將包含受影響時段的相關信息。此信息也會記錄到 JVM 的日志記錄工具中。

      您可以配置 JFR 以 便不將任何數據寫入磁盤。在此模式中,全局緩沖區起到了循環緩沖區的作用,在緩沖區變滿時刪除最早的數據。這種開銷極低的操作模式仍會收集問題根本原因分 析所需的全部關鍵數據。由于最近的數據始終在全局緩沖區中可用,只要操作或監視系統檢測到問題,這些數據可以根據需要寫入磁盤。但是,在這種模式下,只有 最近幾分鐘的數據可用,因此只包含最新的事件。如果需要獲取時間段較長的完整操作歷史記錄,請使用定期將數據寫入磁盤的默認模式。

      沒有終止時間;必須顯式地轉儲(dump)成jfr文件,然后用JMC打開分析。

      有固定時間;如果在JMC發起則會由JMC自動下載到本地并打開jfr文件分析。

      JFR生成是的二進制的以.jfr結尾的磁盤文件,需要明確定制保存的路徑。

      Java 飛行記錄器收集有關事件的數據。事件在 JVM 或 Java 應用程序中的特定時間點發生。每個事件都具有名稱、時間戳以及可選的有效負載。有效負載是與事件關聯的數據,例如 CPU 占用率、事件發生前后的 Java 堆大小、鎖所有者的線程 ID 等。

      JVM(和Spark)性能優化:使用Java Mission Control (1)

      大部分事件還具備關于所發生事件的線程的信息、發生事件時的堆棧跟蹤以及事件的持續時間。使用事件中提供的信息,您可以重新構建 JVM 和 Java 應用程序的運行時詳細信息。

      JFR 收集有關三種類型事件的信息:

      · 持續時間事件在一段時間中發生,在事件完成時記錄。可以為持續時間事件設置閾值,這樣就只會記錄持續時間超過指定時段的事件。這不適用于其他類型的事件。

      · 即時事件在瞬間發生并立即記錄。

      · 采樣事件 (也稱為可請求事件) 會定期記錄,用于提供系統活動樣本。您可以配置采樣頻率。

      JFR 在極高的明細級別上監視正在運行的系統。這會生成海量的數據。為了盡可能保持低開銷,需要將記錄的事件類型限制為您實際需要的類型。大部分情況下,持續時間非常短的事件沒有多大意義,因此,可以將記錄限制為持續時間超過特定有意義閾值的事件。

      轉載請注明出處:華為云博客 https://portal.hwclouds.com/blogs

      JVM spark Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel數據替換的方法
      下一篇:分列內容(如何拆分兩列)
      相關文章
      日韩色日韩视频亚洲网站| 久久亚洲中文无码咪咪爱| 久久国产成人精品国产成人亚洲| 激情无码亚洲一区二区三区| 亚洲熟妇无码八V在线播放| 亚洲一级毛片免费观看| 亚洲第一香蕉视频| 亚洲黄色免费网站| 亚洲一区二区成人| 亚洲三级电影网站| 久久精品国产亚洲AV电影| 婷婷精品国产亚洲AV麻豆不片| 亚洲色欲色欲www在线丝| 中国亚洲女人69内射少妇| 中文字幕精品亚洲无线码一区| 亚洲乳大丰满中文字幕| 亚洲国产精品无码久久一线| 亚洲国产精品VA在线观看麻豆| 亚洲AV无码一区东京热久久| 亚洲AV日韩AV永久无码绿巨人| 亚洲国产精品自在线一区二区| 亚洲精品高清国产一久久| 亚洲精品美女在线观看| 亚洲伦理一二三四| 亚洲色大18成人网站WWW在线播放| 亚洲日韩国产AV无码无码精品| 亚洲av色香蕉一区二区三区蜜桃| 亚洲av无码一区二区三区天堂 | 亚洲熟妇av一区| 亚洲欧洲日产国码www| 国产成人精品日本亚洲专一区| 亚洲熟妇无码av另类vr影视| 丰满亚洲大尺度无码无码专线 | 亚洲色婷婷综合开心网| 亚洲一区二区三区在线观看精品中文 | 亚洲成aⅴ人片在线观| 亚洲人成77777在线观看网| 亚洲av无一区二区三区| 亚洲区小说区图片区| 亚洲AV无码成人精品区蜜桃| 亚洲福利电影一区二区?|