您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“UAVStack中JVM監(jiān)控分析工具怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“UAVStack中JVM監(jiān)控分析工具怎么用”這篇文章吧。
作為AllInOne的智能化服務(wù)技術(shù)棧,UAVStack提供了非常全面的監(jiān)控數(shù)據(jù)采樣功能,同時支持數(shù)據(jù)監(jiān)控與預(yù)警。近期,我們整合了原有的數(shù)據(jù)采集展示功能,新增JVM分析功能,推出了更易用的JVM監(jiān)控分析工具。
熟悉JDK的開發(fā)者都知道,JDK本身提供了一套JVM分析工具,包括jinfo、jmap、jstack等。用戶可以通過命令行輕松獲取JVM內(nèi)存堆棧信息、內(nèi)存對象分配以及JVM啟動基本參數(shù)信息。但這些工具需要在命令行環(huán)境中執(zhí)行,且生產(chǎn)環(huán)境下則需要通過堡壘機轉(zhuǎn)發(fā)。
開源社區(qū)一些不錯的JVM分析工具也可以提供獲取JVM基本信息、追蹤堆棧、獲取內(nèi)存信息等功能,但同樣需要命令行CLI的支持。
UAVStack推出的JVM監(jiān)控分析工具提供基于頁面的展現(xiàn)方式,以圖形化的方式展示采集到的監(jiān)控數(shù)據(jù);同時提供JVM基本參數(shù)獲取、內(nèi)存dump、線程分析、內(nèi)存分配采樣和熱點方法分析等功能。
JVM監(jiān)控分析工具基于UAVStack既有架構(gòu),整體分為前端、后臺及中間件增強框架(MOF)。其中:
前端負責展示數(shù)據(jù)、向后臺發(fā)送用戶執(zhí)行指令;
后臺負責下發(fā)指令、響應(yīng)用戶查詢、處理采集到的數(shù)據(jù);
中間件增強框架(MOF)負責接收后臺下發(fā)的指令、執(zhí)行指令并返回數(shù)據(jù)或?qū)?shù)據(jù)寫入文件,然后通過UAV提供的文件歸集功能上送數(shù)據(jù)。
整體架構(gòu)流程如下圖所示:
JMX提供相關(guān)接口,獲取基礎(chǔ)的JVM監(jiān)控數(shù)據(jù),如內(nèi)存堆大小、GC情況等,是JVM監(jiān)控數(shù)據(jù)的基礎(chǔ)。
作為分析工具整條鏈路的基礎(chǔ),MOF依附于用戶應(yīng)用,主要提供以下基礎(chǔ)支持:
基礎(chǔ)數(shù)據(jù)采集:MOF植入應(yīng)用中,JMX定期獲取并上報相關(guān)JVM的基本信息數(shù)據(jù),為展示和預(yù)警提供數(shù)據(jù)基礎(chǔ)。
請求捕獲、指令執(zhí)行:JVM監(jiān)控分析工具的大多數(shù)功能都需要下發(fā)指令至應(yīng)用所在的服務(wù)器。MOF負責把下發(fā)指令的請求攔截下來,執(zhí)行并返回對應(yīng)的結(jié)果。
Java Attach API是由Sun提供的一套非標準API,可以將用戶連接到運行中的虛擬機進程上,進行agent的掛載等操作。
在JVM監(jiān)控分析工具中,Java Attach API主要用于Attach到虛擬機進程,進行如下操作:
獲取JMX Connection:從外部獲取JVMConnection,得到MXBean,抓取運行數(shù)據(jù)。(CPU采樣分析)
獲取VirtualMachine對象:調(diào)用接口,得到堆內(nèi)存分布信息。(內(nèi)存采樣分析)
選擇應(yīng)用實例后即可進入基本監(jiān)控頁面。
該頁面主要展示CPU使用率、線程情況、內(nèi)存占用和GC情況。用戶可以根據(jù)需求調(diào)整時間范圍,查看不同時段的監(jiān)控數(shù)據(jù)。
JVM摘要頁面顯示當前虛擬機的基本參數(shù)信息,包括基本信息、JVM參數(shù)和系統(tǒng)屬性。其中:
基本信息包括pid、主機信息、啟動參數(shù)以及JVM的啟動時間等最基本、最重要的信息;
JVM參數(shù)包括所有JVM啟動參數(shù),用戶可查看指定的堆大小、垃圾回收器信息等;
系統(tǒng)屬性包括寫入System.Properties中的所有配置信息以及Javaagent的配置屬性。
線程分析通過執(zhí)行jstack獲取線程基本信息,并對輸出結(jié)果進行分析,得到線程狀態(tài)數(shù)量、有無死鎖等信息。
內(nèi)存Dump通過執(zhí)行jmap獲取指定JVM的堆棧dump文件。
用戶可以便捷地在前端一鍵生成dump,不需要再登錄堡壘機。點擊“刷新”可以查看近期dump內(nèi)存的操作記錄。
CPU分析是基于線程棧的采樣分析,主要提供兩個功能:線程執(zhí)行時間以及方法熱點采樣。
線程執(zhí)行時間是指線程在采樣期間的活動時間。查詢結(jié)果按照線程活動總時間排序,同時提供線程名稱和線程執(zhí)行時間信息,用戶可據(jù)此判斷應(yīng)用的執(zhí)行情況。
方法熱點采樣統(tǒng)計所有方法的執(zhí)行時間,提供方法的類名和方法名信息。其中,方法的自用執(zhí)行時間不包括方法調(diào)用其他方法的執(zhí)行時間。查詢結(jié)果按照方法的自用執(zhí)行時間降序排序,用戶可以查看當前應(yīng)用內(nèi)部耗時較長的執(zhí)行方法,判斷應(yīng)用是否異常、是否需要優(yōu)化。
內(nèi)存分析是基于線程以及堆的統(tǒng)計采樣分析,主要提供兩個功能:每個線程的內(nèi)存分配和堆內(nèi)分配細節(jié)。
線程內(nèi)存分配提供每個線程的內(nèi)存分配大小和線程名稱等信息,按照內(nèi)存分配大小降序排列。用戶可查看當前占用內(nèi)存較大的線程。
堆內(nèi)分配提供了各個類在堆內(nèi)的分配實例數(shù)以及所占用的堆內(nèi)存,按照堆內(nèi)存大小降序排列。用戶可把該功能當作簡易的dump及分析工具,快速分析內(nèi)存分配情況,發(fā)現(xiàn)內(nèi)存分配問題。
以上是“UAVStack中JVM監(jiān)控分析工具怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。