天天看點

五分鐘帶你玩轉Arthas(七)晉級指令本文檔隻提供基礎解釋 可以轉跳到arthas官網檢視詳細介紹進階使用

本文檔隻提供基礎解釋 可以轉跳到arthas官網檢視詳細介紹

進階使用

基礎指令

  • help——檢視指令幫助資訊
  • cat ——列印檔案内容,和linux裡的cat指令類似
  • echo –列印參數,和linux裡的echo指令類似
  • grep ——比對查找,和linux裡的grep指令類似
  • base64 ——base64編碼轉換,和linux裡的base64指令類似
  • tee ——複制标準輸入到标準輸出和指定的檔案,和linux裡的tee指令類似
  • pwd ——傳回目前的工作目錄,和linux指令類似
  • cls——清空目前螢幕區域
  • session——檢視目前會話的資訊
  • reset ——重置增強類,将被 Arthas 增強過的類全部還原,Arthas 服務端關閉時會重置所有增強過的類
  • version——輸出目前目标 Java 程序所加載的 Arthas 版本号
  • history——列印指令曆史
  • quit——退出目前 Arthas 用戶端,其他 Arthas 用戶端不受影響
  • stop——關閉 Arthas 服務端,所有 Arthas 用戶端全部退出
  • keymap ——Arthas快捷鍵清單及自定義快捷鍵

jvm相關

  • dashboard ——目前系統的實時資料面闆
  • thread ——檢視目前 JVM 的線程堆棧資訊
  • jvm ——檢視目前 JVM 的資訊
  • sysprop ——檢視和修改JVM的系統屬性
  • sysenv ——檢視JVM的環境變量
  • vmoption ——檢視和修改JVM裡診斷相關的option
  • perfcounter ——檢視目前 JVM 的Perf Counter資訊
  • logger ——檢視和修改logger
  • getstatic ——檢視類的靜态屬性
  • ognl ——執行ognl表達式
  • mbean ——檢視 Mbean 的資訊
  • heapdump ——dump java heap, 類似jmap指令的heap dump功能

class/classloader相關

  • sc ——檢視JVM已加載的類資訊
  • sm ——檢視已加載類的方法資訊
  • jad ——反編譯指定已加載類的源碼
  • mc ——記憶體編譯器,記憶體編譯

    .java

    檔案為

    .class

    檔案
  • retransform ——加載外部的

    .class

    檔案,retransform到JVM裡
  • redefine

    .class

    檔案,redefine到JVM裡
  • dump ——dump 已加載類的 byte code 到特定目錄
  • classloader ——檢視classloader的繼承樹,urls,類加載資訊,使用classloader去getResource

monitor/watch/trace相關

請注意,這些指令,都通過位元組碼增強技術來實作的,會在指定類的方法中插入一些切面來實作資料統計和觀測,是以線上上、預發使用時,請盡量明确需要觀測的類、方法以及條件,診斷結束要執行

stop

或将增強過的類執行

reset

指令。
  • monitor ——方法執行監控
  • watch ——方法執行資料觀測
  • trace ——方法内部調用路徑,并輸出方法路徑上的每個節點上耗時
  • stack ——輸出目前方法被調用的調用路徑
  • tt ——方法執行資料的時空隧道,記錄下指定方法每次調用的入參和傳回資訊,并能對這些不同的時間下調用進行觀測

profiler/火焰圖

options

  • ——檢視或設定Arthas全局開關

管道

Arthas支援使用管道對上述指令的結果進行進一步的處理,如

sm java.lang.String * | grep 'index'

  • grep——搜尋滿足條件的結果
  • plaintext——将指令的結果去除ANSI顔色
  • wc——按行統計輸出結果

背景異步任務

當線上出現偶發的問題,比如需要watch某個條件,而這個條件一天可能才會出現一次時,異步背景任務就派上用場了,詳情請參考

這裡
  • 使用 > 将結果重寫向到日志檔案,使用 & 指定指令是背景運作,session斷開不影響任務執行(生命周期預設為1天)
  • jobs——列出所有job
  • kill——強制終止任務
  • fg——将暫停的任務拉到前台執行
  • bg——将暫停的任務放到背景執行

Web Console

通過websocket連接配接Arthas。

Arthas Properties

以java agent方式啟動

as.sh 和 arthas-boot 技巧

  • 通過

    select

    功能選擇attach的程序。

正常情況下,每次執行

as.sh

/

arthas-boot.jar

需要選擇,或者指定PID。這樣會比較麻煩,因為每次啟動應用,它的PID會變化。

比如,已經啟動了

arthas-demo.jar

,使用

jps

指令檢視:

$ jps
58883 arthas-demo.jar
58884 Jps

select

參數可以指定程序名字,非常友善。

$ ./as.sh --select arthas-demo
Arthas script version: 3.3.6
[INFO] JAVA_HOME: /tmp/java/8.0.222-zulu
Arthas home: /Users/admin/.arthas/lib/3.3.6/arthas
Calculating attach execution time...
Attaching to 59161 using version /Users/admin/.arthas/lib/3.3.6/arthas...
real 0m0.572s
user 0m0.281s
sys 0m0.039s
Attach success.
telnet connecting to arthas server... current timestamp is 1594280799
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki https://arthas.aliyun.com/doc
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
version 3.3.6
pid 58883

使用者資料回報

3.1.4

版本後,增加了使用者資料回報功能,友善統一做安全或者曆史資料統計。

在啟動時,指定

stat-url

,就會回報執行的每一行指令,比如:

./as.sh --stat-url 'http://192.168.10.11:8080/api/stat'

在tunnel server裡有一個示例的回報代碼,使用者可以自己在伺服器上實作。

StatController.java

其他特性