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
掃一掃,關注我