JVM調優工具Arthas的使用

老僧觀天下發表於2020-07-17

Arthas 是Alibaba開源的Java診斷工具,深受開發者喜愛。線上排查問題,無需重啟;動態跟蹤Java程式碼;實時監控JVM狀態。


Arthas 支援JDK6+,支援Linux/Mac/Windows,採用命令列互動模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。

文件: https://alibaba.github.io/arthas/

安裝啟動Arthas

curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

選擇應用Java程式:

需要觀察程式是第5個,則輸入5,再輸入回車/Enter
Arthas會attach就到目標程式上

基礎命令

help——檢視命令幫助資訊
cls——清空當前螢幕區域
history——列印命令歷史
quit——退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響
stop——關閉 Arthas 服務端,所有 Arthas 客戶端全部退出

jvm命令

dashboard——當前系統的實時資料皮膚
thread——檢視當前 JVM 的執行緒堆疊資訊
jvm——檢視當前 JVM 的資訊
sysprop——檢視和修改JVM的系統屬性
sysenv——檢視JVM的環境變數
vmoption——檢視和修改JVM裡診斷相關的option
heapdump——dump java heap, 類似jmap命令的heap dump功能

分析命令

monitor——方法執行監控
watch——方法執行資料觀測
trace——方法內部呼叫路徑,並輸出方法路徑上的每個節點上耗時
stack——輸出當前方法被呼叫的呼叫路徑
tt——方法執行資料的時空隧道,記錄下指定方法每次呼叫的入參和返回資訊,並能對這些不同的時間下呼叫進行觀測

推薦命令

thread

可以排查死鎖。檢視當前執行緒資訊,檢視執行緒的堆疊

thread -b:找出當前阻塞其他執行緒的執行緒
有時候我們發現應用卡住了, 通常是由於某個執行緒拿住了某個鎖, 並且其他執行緒都在等待這把鎖造成的。
為了排查這類問題, arthas提供了thread -b, 一鍵找出那個罪魁禍首。
thread –state:檢視指定狀態的執行緒

trace

可以在效能測試中分析鏈路上方法的執行時間,判斷效能問題所在。
trace根據方法內部呼叫路徑,並輸出方法路徑上的每個節點上耗時。

trace 命令能主動搜尋 class-pattern/method-pattern 對應的方法呼叫路徑,渲染和統計整個呼叫鏈路上的所有效能開銷和追蹤呼叫鏈路。

trace 包類名 方法 
trace com.itest.itestapi.TestController iTestGet

掃一掃,關注我

相關文章