Arthas --Alibaba開源的java 診斷工具

Arthas

  • 是什麼 Alibaba開源的java 診斷工具
  • 從哪知道的:簡書-Arthas簡介
  • GitHub地址:https://github.com/alibaba/arthas
  • 解決問題:java

    1. 這個類從哪一個 jar 包加載的?爲何會報各類類相關的 Exception?
    2. 我改的代碼爲何沒有執行到?難道是我沒 commit?分支搞錯了?
    3. 遇到問題沒法在線上 debug,難道只能經過加日誌再從新發布嗎?
    4. 線上遇到某個用戶的數據處理有問題,但線上一樣沒法 debug,線下沒法重現!
    5. 是否有一個全局視角來查看系統的運行情況?有什麼辦法能夠監控到JVM的實時運行狀態?

安裝

  • 環境 mac OSX
  • 採起安裝方式:一鍵安裝(安裝方法見官方文檔)
  • 安裝結果:

clipboard.png

使用

  1. 直接在shell下面執行./as.sh,進入交互界面git

  2. 輸入進程號,選擇要診斷的進程

相關命令

  • help——查看命令幫助信息

clipboard.png

  • dashboard ——實時數據面板

clipboard.png

  • thread —— 查看線程信息session

    • 沒有線程數,顯示全部線程

      clipboard.png

    • 帶線程數 ,顯示該線程棧信息

      clipboard.png

  • jad ——反編譯加載類

clipboard.png

  • watch ——數據觀測

clipboard.png

命令列表

  • 基礎命令jvm

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

    • dashboard——當前系統的實時數據面板
    • thread——查看當前 JVM 的線程堆棧信息
    • jvm——查看當前 JVM 的信息
    • sysprop——查看和修改JVM的系統屬性
    • sysenv——查看JVM的環境變量
    • getstatic——查看類的靜態屬性
    • New! ognl——執行ognl表達式
  • class/classloader相關ui

    • sc——查看JVM已加載的類信息
    • sm——查看已加載類的方法信息
    • dump——dump 已加載類的 byte code 到特定目錄
    • redefine——加載外部的.class文件,redefine到JVM裏
    • jad——反編譯指定已加載類的源碼
    • classloader——查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource
  • monitor/watch/trace相關
    請注意,這些命令,都經過字節碼加強技術來實現的,會在指定類的方法中插入一些切面來實現數據統計和觀測,所以在線上、預發使用時,請儘可能明確須要觀測的類、方法以及條件,診斷結束要執行url

    • shutdown 或將加強過的類執行 reset 命令。
    • monitor——方法執行監控
    • watch——方法執行數據觀測
    • trace——方法內部調用路徑,並輸出方法路徑上的每一個節點上耗時
    • stack——輸出當前方法被調用的調用路徑
    • tt——方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不一樣的時間下調用進行觀測
  • optionsspa

    • options——查看或設置Arthas全局開關
相關文章
相關標籤/搜索