【開發工具】Arthas使用筆記:1、下載安裝
阿新 • • 發佈:2019-01-09
本文參考官方文件:https://alibaba.github.io/arthas/install-detail.html
如有問題可加入上述文件中的官方QQ/釘釘群
一、安裝(windows)
1、開發命令框,切換到準備安裝的目錄,D:/cloudcore/open_tools/arthas
2、複製下面命令,完成一鍵安裝,並且在該目錄下會生成一個as.sh檔案
curl -L https://alibaba.github.io/arthas/install.sh | sh
3、執行as.sh,./as.sh,Found existing java process, please choose one and hit RETURN.這裡選擇Java程序,輸入2,回車,執行後出現下面的錯誤
[email protected] MINGW64 /d/cloudcore/open_tools/arthas $ ./as.sh Arthas script version: 3.0.5.2 [INFO] JAVA_HOME: /c/Java/jdk1.8.0_161 Found existing java process, please choose one and hit RETURN. * [1]: 21924 org.apache.zookeeper.server.quorum.QuorumPeerMain [2]: 25752 [2] ./as.sh: line 626: [2]-1: syntax error: operand expected (error token is "[2]-1") 2 updating version 3.0.5 ... Download arthas from: https://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/3.0.5/arthas-packaging-3.0.5-bin.zip ######################################################################## 100.0% Archive: /tmp/temp_3.0.5_22664/arthas-3.0.5-bin.zip inflating: /tmp/temp_3.0.5_22664/arthas-spy.jar inflating: /tmp/temp_3.0.5_22664/arthas-boot.jar inflating: /tmp/temp_3.0.5_22664/arthas-core.jar inflating: /tmp/temp_3.0.5_22664/arthas-agent.jar inflating: /tmp/temp_3.0.5_22664/arthas-demo.jar inflating: /tmp/temp_3.0.5_22664/install-local.sh inflating: /tmp/temp_3.0.5_22664/as.sh inflating: /tmp/temp_3.0.5_22664/as.bat inflating: /tmp/temp_3.0.5_22664/arthas-client.jar update completed. Arthas home: /c/Users/liuguangyu/.arthas/lib/3.0.5/arthas Calculating attach execution time... Attaching to using version /c/Users/liuguangyu/.arthas/lib/3.0.5/arthas... [ERROR] Start arthas failed, exception stack trace: com.taobao.middleware.cli.InvalidValueException: The value '-target-ip' is not accepted by 'pid' at com.taobao.middleware.cli.impl.DefaultCommandLine.create(DefaultCommandLine.java:342) at com.taobao.middleware.cli.impl.DefaultCommandLine.getValue(DefaultCommandLine.java:267) at com.taobao.middleware.cli.impl.DefaultCommandLine.getOptionValue(DefaultCommandLine.java:91) at com.taobao.arthas.core.Arthas.parse(Arthas.java:44) at com.taobao.arthas.core.Arthas.<init>(Arthas.java:25) at com.taobao.arthas.core.Arthas.main(Arthas.java:99) Caused by: java.lang.IllegalArgumentException: java.lang.NumberFormatException: For input string: "-target-ip" at com.taobao.middleware.cli.converters.ConstructorBasedConverter.fromString(ConstructorBasedConverter.java:70) at com.taobao.middleware.cli.converters.Converters.create(Converters.java:52) at com.taobao.middleware.cli.impl.DefaultCommandLine.create(DefaultCommandLine.java:339) ... 5 more Caused by: java.lang.NumberFormatException: For input string: "-target-ip" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.<init>(Integer.java:867) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.taobao.middleware.cli.converters.ConstructorBasedConverter.fromString(ConstructorBasedConverter.java:67) ... 7 more real 0m1.425s user 0m0.015s sys 0m0.015s attach to target jvm () failed, check /c/Users/liuguangyu/logs/arthas/arthas.log or stderr of target jvm for any exceptions.
然後我把我開的zookeeper程序給關了,再次執行./as.sh,執行成功。
[email protected] MINGW64 /d/cloudcore/open_tools/arthas $ ./as.sh Arthas script version: 3.0.5.2 [INFO] JAVA_HOME: /c/Java/jdk1.8.0_161 Found existing java process, please choose one and hit RETURN. * [1]: 25752 Arthas home: /c/Users/liuguangyu/.arthas/lib/3.0.5/arthas Calculating attach execution time... Attaching to 25752 using version /c/Users/liuguangyu/.arthas/lib/3.0.5/arthas... 1 real 0m13.995s user 0m0.000s sys 0m0.061s Attach success. It seems that current bash is under Windows. /c/WINDOWS/system32/telnet can not run under bash. Please start cmd.exe from Windows start menu, and then run telnet 127.0.0.1 3658 to connect to target process. Or visit http://127.0.0.1:8563 to connect to target process.
4、在瀏覽器中輸入http://localhost:8563/ 測試一下
點選Connect,出現一下頁面
或者使用命令列進入:win+R—>cmd—>telnet 127.0.0.1 3658,同樣可以出現上面的arthas語境
5、在本機上準備一個測試類,隨便找了一個,並執行
public class TestArthas {
public static void main(String[] args) throws Exception {
int i = 0;
while(true) {
i += 1;
System.err.println(i);
Thread.sleep(2000);
}
}
}
二、命令列表
- dashboard 當前系統的實時資料面板。
- thread 檢視當前執行緒資訊,檢視執行緒的堆疊。
- jvm 檢視當前JVM資訊
- sysprop 檢視當前JVM的系統屬性(System Property)
- sysenv 檢視當前JVM的環境屬性(System Environment Variables)
- getstatic 通過getstatic命令可以方便的檢視類的靜態屬性。使用方法為getstatic class_name field_name
- ognl 執行ognl表示式
- sc 檢視JVM已載入的類資訊,這個命令支援的引數有 [d]、[E]、[f] 和 [x:]。
- sm sm 命令只能看到由當前類所宣告 (declaring) 的方法,父類則無法看到
- dump dump 已載入類的 bytecode 到特定目錄
- jad 反編譯指定已載入類的原始碼
- classloader 檢視classloader的繼承樹,urls,類載入資訊
- redefine 載入外部的.class檔案,redefine jvm已載入的類。
- monitor 方法執行監控,對匹配 class-pattern/method-pattern的類、方法的呼叫進行監控。
- watch 方法執行資料觀測,能方便的觀察到指定方法的呼叫情況。
- trace 方法內部呼叫路徑,並輸出方法路徑上的每個節點上耗時。
- stack 輸出當前方法被呼叫的呼叫路徑
- tt 方法執行資料的時空隧道,記錄下指定方法每次呼叫的入參和返回資訊。
- options 全域性開關
Arthas的基礎命令:
- help——檢視命令幫助資訊
- cls——清空當前螢幕區域
- session——檢視當前會話的資訊
- reset——重置增強類,將被 Arthas 增強過的類全部還原,Arthas 服務端關閉時會重置所有增強過的類
- version——輸出當前目標 Java 程序所載入的 Arthas 版本號
- history——列印命令歷史
- quit——退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響
- shutdown——關閉 Arthas 服務端,所有 Arthas 客戶端全部退出
- keymap——Arthas快捷鍵列表及自定義快捷鍵
再次貼出官方文件:https://alibaba.github.io/arthas/install-detail.html