java線上項目排查,Arthas簡單上手

Arthas 是Alibaba開源的Java診斷工具。參考:https://alibaba.github.io/arthas/

當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:

  1. 這個類從哪個 jar 包加載的?爲什麼會報各種類相關的 Exception?

  2. 我改的代碼爲什麼沒有執行到?難道是我沒 commit?分支搞錯了?

  3. 遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?

  4. 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!

  5. 是否有一個全局視角來查看系統的運行狀況?

  6. 有什麼辦法可以監控到JVM的實時運行狀態?

  7. 怎麼快速定位應用的熱點,生成火焰圖?

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

1、安裝(Linux):

curl -L https://alibaba.github.io/arthas/install.sh | sh

2、啓動:

./as.as

序號後的數值(如:15075)爲當前服務器上的進程PID。選擇你要排查的項目進程,選擇序號(如:1):

則進入到arthas交互頁面。

3、常用命令:

3.1)“上帝視角”,即Dashboard。對當前項目的數據監控。

3.2)thread。查看當前線程信息,查看線程的堆棧。

thread:查看所有線程。

thread -n 5:查看最忙(CPU使用率最高)的5條線程。

thread -b:找出當前阻塞其他線程的線程。

thread -state:查看指定狀態的線程。

3.3)jad。反編譯class。

jad com.icode.controller.VersionController

3.4) watch。觀察指定方法的調用情況。能觀察到的範圍爲:返回值拋出異常入參,通過編寫 OGNL 表達式進行對應變量的查看。

如查看某個方法的返回值:

watch 全路徑類名 方法名 returnObj

3.5) trace。輸出方法路徑上的每個節點上耗時。

trace 全路徑類名 方法名

3.6)jvm。查看當前JVM信息。

4、中斷、退出:

    4.1)使用ctrl+c中斷artahs執行。

    4.2)使用 exit 退出arthas。

此外,arthas還提供web console。通過瀏覽器連接arthas。

其他常用命令,以及用法參考官方文檔。 這裏只展示幾個測試用的簡單上手命令。以供以後查閱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章