阿里重磅開源性能測試神器,性能監控分析工具 Arthas

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

Arthas(阿爾薩斯)是Alibaba開源的Java診斷性能監控分析工具,它不需要做任何的參數配置,就可以直觀的獲取各種維度的性能數據。通過閱讀官網的介紹,可以看到,當我們遇到以下類似問題而束手無策時,Arthas可以幫助我們解決:

  • 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
  • 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
  • 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
  • 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
  • 是否有一個全局視角來查看系統的運行狀況?
  • 有什么辦法可以監控到JVM的實時運行狀態?

Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。

安裝

使用arthas-boot推薦安裝方式,下載arthas-boot.jar,然后用java -jar的方式啟動:

獲取arthas

  • 在線獲取
wget https://alibaba.github.io/arthas/arthas-boot.jar 
  • 離線獲取
https://alibaba.github.io/arthas/arthas-boot.jar 
  • 如果下載速度比較慢,可以使用aliyun的鏡像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http 
  • 如果從github下載有問題,可以使用gitee鏡像
wget https://arthas.gitee.io/arthas-boot.jar 

啟動arthas

java -jar arthas-boot.jar 

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

查看幫助信息

java -jar arthas-boot.jar -h 

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

第一次使用arthas時,會自動下載一些依賴包,等待下載完成,就會進入到arthas提供的命令行界面。

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

dashboard 實時監控數據

dashboard命令可以查看當前系統的實時數據面板。

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

圖表說明

  • ID:Java級別的線程ID,注意這個ID不能跟jstack中的nativeID一一對應
  • NAME:線程名
  • GROUP:線程組名
  • PRIORITY: 線程優先級, 1~10之間的數字,越大表示優先級越高
  • STATE:線程的狀態
  • CPU:線程消耗的cpu占比,采樣100ms,將所有線程在這100ms內的cpu使用量求和,再算出每個線程的cpu使用占比。
  • TIME:線程運行總時間,數據格式為分:秒
  • INTERRUPTED:線程當前的中斷位狀態
  • DAEMON: 是否是daemon線程

輸入 Q 或者 Ctrl+C 可以退出dashboard命令。

Thread 查看線程的棧

查看當前線程信息,查看線程的堆棧,thread 1 命令會打印線程ID 1的棧。

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

同樣,Arthas支持管道,可以用 thread 1 | grep ‘main(‘ 查找到main class。如下,可以看到main class是demo.MathGame。

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

參數說明

  • id 線程id
  • [n:]:指定最忙的前N個線程并打印堆棧
  • [b]:找出當前阻塞其他線程的線程
  • [i <value>]:指定cpu占比統計的采樣間隔,單位為毫秒

Sc(Search-Class)

查看JVM已加載的類信息,搜索出所有已經加載到 JVM 中的 Class 信息。

sc -d *MathGame 

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

參數說明

  • class-pattern:類名表達式匹配
  • method-pattern:方法名表達式匹配
  • [d]:輸出當前類的詳細信息,包括這個類所加載的原始文件來源、類的聲明、加載的ClassLoader等詳細信息。如果一個類被多個ClassLoader所加載,則會出現多次
  • [E]:開啟正則表達式匹配,默認為通配符匹配
  • [f]:輸出當前類的成員變量信息(需要配合參數-d一起使用)
  • [x:]:指定輸出靜態變量時屬性的遍歷深度,默認為 0,即直接使用 toString 輸出

Jad

編譯指定已加載類的源碼,可以通過 jad 命令來反編譯代碼,jad 命令將 JVM 中實際運行的 class 的 byte code 反編譯成 java 代碼,便于你理解業務邏輯。

jad demo.MathGame 

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

默認情況下,反編譯結果里會帶有ClassLoader信息,通過–source-only選項,可以只打印源代碼。方便和mc/redefine命令結合使用。輸入 Q 或者 Ctrl+C 退出watch命令。

參數說明

  • class-pattern:類名表達式匹配
  • [c:]:類所屬 ClassLoader 的 hashcode
  • [E]:開啟正則表達式匹配,默認為通配符匹配

jvm

查看當前JVM信息

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

trace

方法內部調用路徑,并輸出方法路徑上的每個節點上耗時,trace 命令能主動搜索 class-pattern/method-pattern 對應的方法調用路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

我們可以看到 “—[0.128988ms] java.io.PrintStream:println() #28”耗時較長。

參數說明

  • class-pattern:類名表達式匹配
  • method-pattern:方法名表達式匹配
  • condition-express:條件表達式
  • [E]:開啟正則表達式匹配,默認為通配符匹配
  • [n:]:命令執行次數
  • #cost:方法執行耗時

stack

輸出當前方法被調用的調用路徑,很多時候我們都知道一個方法被執行,但這個方法被執行的路徑非常多,或者你根本就不知道這個方法是從那里被執行了,此時你需要的是 stack 命令。

阿里重磅開源性能測試神器,性能監控分析工具 Arthas

參數說明

  • class-pattern:類名表達式匹配
  • method-pattern:方法名表達式匹配
  • condition-express:條件表達式
  • [E]:開啟正則表達式匹配,默認為通配符匹配
  • [n:]:執行次數限制

Arthas 其他基礎命令

  • help:查看命令幫助信息
  • cls:清空當前屏幕區域
  • session:查看當前會話的信息
  • reset:重置增強類,將被 Arthas 增強過的類全部還原,Arthas 服務端關閉時會重置所有增強過的類
  • version:輸出當前目標 Java 進程所加載的 Arthas 版本號
  • history:打印命令歷史
  • quit:退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響
  • shutdown:關閉 Arthas 服務端,所有 Arthas 客戶端全部退出
  • keymap:Arthas快捷鍵列表及自定義快捷鍵

更多詳細介紹,可閱讀 Arthas 用戶文檔 — Arthas 3.1.1 文檔

原文 

http://news.51cto.com/art/201906/598041.htm

本站部分文章源于互聯網,本著傳播知識、有益學習和研究的目的進行的轉載,為網友免費提供。如有著作權人或出版方提出異議,本站將立即刪除。如果您對文章轉載有任何疑問請告之我們,以便我們及時糾正。

PS:推薦一個微信公眾號: askHarries 或者qq群:474807195,里面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多

轉載請注明原文出處:Harries Blog? » 阿里重磅開源性能測試神器,性能監控分析工具 Arthas

贊 (0)
分享到:更多 ()

評論 0

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
2013平特肖公式