小景最近在做程式和資料庫的壓測工作,期間監控壓測資料,分析程式原因變成了一個待解決的問題,根據公司小夥伴的建議,接觸了阿爾薩斯這個診斷工具,下面小景分別基於Linux作業系統和Windows作業系統,來詳細的說下使用說明和使用心得。
Arthas(阿爾薩斯)是一個用於診斷Java應用程式的開源工具,它是一種命令列工具,用於實時分析和偵錯Java應用程式的執行時行為。它提供了豐富的功能,可以幫助開發人員診斷和解決各種Java應用程式中的效能問題和故障。
基於Linux系統,以下是Arthas的詳細使用方式:
安裝Arthas: 首先,您需要安裝Arthas。您可以從官方網站 https://alibaba.github.io/arthas/ 下載Arthas的最新版本。下載後,將其解壓縮到您選擇的目錄中。
啟動Arthas: 進入Arthas的安裝目錄,執行以下命令來啟動Arthas:
./as.sh
或者./as.bat
這將啟動Arthas的命令列介面。
選擇目標應用程式: 在Arthas命令列介面中,您需要選擇要診斷的目標Java應用程式。可以使用以下命令列出正在執行的Java應用程式:
ps
然後使用-t
選項選擇目標應用程式,例如:
-t 12345
其中,12345是目標應用程式的PID。
使用命令進行分析和偵錯: 一旦選擇了目標應用程式,您可以使用各種Arthas命令來進行分析和偵錯。例如,您可以使用以下命令來檢視Java類的方法呼叫棧:
jad java.lang.String
或者,您可以使用以下命令來監視方法的呼叫和響應時間:
watch com.example.MyClass myMethod '{params,returnObj,throwExp}' -n 3
這將監視com.example.MyClass
中的myMethod
方法,並在每次呼叫時顯示引數、返回值和異常資訊,最多顯示3次。
以下是一些常見的Arthas命令和其詳細用法:
help
命令: 使用 help
命令可以檢視Arthas的幫助檔案,列出可用的命令和功能。
help
dashboard
命令: dashboard
命令可以顯示儀表板,提供了有關Java應用程式的實時資訊,包括執行緒、堆記憶體、類載入等。
dashboard
thread
命令: 使用 thread
命令可以檢視Java執行緒的資訊,包括執行緒堆疊和執行緒狀態。
thread
jvm
命令: jvm
命令允許您檢視Java虛擬機器器的資訊,如記憶體使用情況、垃圾回收統計等。
jvm
trace
命令: trace
命令用於跟蹤方法的執行,可以用於監視特定方法的輸入、輸出和執行時間。
trace com.example.MyClass myMethod
watch
命令: watch
命令用於監視方法的呼叫和返回值。您可以監視特定方法,並檢視引數、返回值和異常資訊。
watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
jad
命令: jad
命令用於反編譯Java類檔案,以檢視類的原始碼。
jad com.example.MyClass
sc
命令: sc
命令用於檢視類載入情況,包括已載入的類、未載入的類和類載入器資訊。
sc -d com.example.MyClass
monitor
命令: monitor
命令用於監視方法的執行情況,包括執行時間、呼叫次數等。
monitor com.example.MyClass myMethod
heapdump
命令: heapdump
命令用於生成堆轉儲檔案,以便進行記憶體分析。
heapdump /path/to/dump.hprof
退出Arthas: 要退出Arthas,可以使用quit
命令。
以上只是Arthas功能的一個小demo,它還具有許多其他功能,如檢視類載入情況、檢視執行緒堆疊、分析效能問題等。您可以檢視官方檔案以深入瞭解更多資訊。Arthas是一個強大的工具,可幫助您快速診斷和解決Java應用程式中的問題。
基於Windows系統,以下是Arthas的詳細使用方式:
下載和安裝Arthas:
存取Arthas的官方網站:https://alibaba.github.io/arthas/,並下載最新版本的Arthas。
解壓縮下載的Arthas壓縮包到您的系統中。為了簡化操作,您可以將Arthas解壓到C:\arthas目錄。
開啟命令列介面:
啟動Arthas:
切換到您的Arthas安裝目錄。在命令列中,使用以下命令:
cd C:\arthas
然後,執行 as.bat
指令碼來啟動Arthas:
as.bat
這將啟動Arthas的命令列介面。
選擇目標Java應用程式:
在Arthas的命令列介面中,使用 ps
命令來列出正在執行的Java應用程式,以查詢您想要診斷和偵錯的應用程式。例如:
ps
從列表中選擇您的目標Java應用程式,並記錄其PID(程序ID)。
連線到目標應用程式:
使用 -t
選項連線到目標Java應用程式,將 <PID>
替換為您在步驟4中獲得的目標應用程式的PID:
-t <PID>
例如,如果您的目標應用程式的PID是12345,可以使用以下命令連線到它:
-t 12345
使用Arthas命令進行診斷和偵錯:
一旦連線到目標應用程式,您可以使用各種Arthas命令來獲取關於應用程式的實時資訊,進行分析和偵錯。以下是一些範例命令:
使用 dashboard
命令檢視應用程式的儀表板:
dashboard
使用 thread
命令檢視執行緒資訊:
thread
使用 jvm
命令檢視Java虛擬機器器資訊:
jvm
使用 trace
命令跟蹤方法的執行:
trace com.example.MyClass myMethod
使用 watch
命令監視方法的呼叫和返回值:
watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
根據您的需求,使用適當的Arthas命令進行診斷和偵錯。
退出Arthas:
quit
命令。在Windows系統上,確保您具有足夠的許可權來連線到目標Java應用程式,並根據需要處理特殊字元的跳脫。
最後,再來說下Arthas的拓展和延申:
以下是更詳細的方式來拓展和延伸Arthas的功能:
自定義命令:
Arthas允許您建立自定義命令,這些命令可以用於執行特定的診斷或偵錯任務。您可以編寫自定義命令的外掛,以擴充套件Arthas的功能。這些自定義命令可以是Groovy指令碼,以實現各種自定義操作。建立自定義命令的一般步驟如下:
~/.arthas/commands
(Linux/macOS)或%USERPROFILE%\.arthas\commands
(Windows)。這使您能夠根據具體需求建立自定義命令,以執行特定的分析或偵錯任務。
使用Arthas外掛系統:
Arthas具有外掛系統,您可以使用該系統編寫自定義外掛來擴充套件Arthas的功能。外掛可以包括自定義命令、自定義函數、拓展效能監控等等。建立Arthas外掛的一般步驟如下:
~/.arthas/lib
(Linux/macOS)或%USERPROFILE%\.arthas\lib
(Windows)。外掛系統使您能夠將自定義功能完全整合到Arthas中,以執行高度客製化的任務。
指令碼和動態載入:
Arthas支援通過Groovy指令碼進行自定義操作,您可以在執行時載入和執行這些指令碼。這使您可以在不重啟目標應用程式的情況下靈活地執行自定義程式碼。例如,您可以使用Groovy指令碼來執行動態的方法跟蹤、紀錄檔記錄或效能監控。
使用Arthas API:
Arthas提供了Java API,您可以在Java應用程式中整合Arthas,以通過程式設計方式執行診斷和偵錯任務。這使得您可以構建自定義工具或整合Arthas的功能到現有的應用程式中。Arthas的API包括ArthasCore
和AdviceListener
等類,可用於動態診斷和偵錯Java應用程式。
結合AOP(面向切面程式設計):
您可以使用Arthas的AOP功能來實現方法級別的攔截和切面程式設計。通過AOP,您可以監控、記錄和修改方法的行為,以適應特定需求。AOP可用於效能分析、安全性檢查、紀錄檔記錄等任務。
遠端擴充套件和監控:
您可以將Arthas與遠端監控工具結合使用,以實現分散式應用程式的診斷和效能監控。這包括將Arthas與ELK堆疊(Elasticsearch、Logstash、Kibana)或Prometheus/Grafana等工具整合,以實現實時監控和紀錄檔分析。
社群和第三方外掛:
在Arthas社群和第三方開發者的支援下,可能會有許多現成的外掛和擴充套件可供使用。您可以查詢和使用這些外掛,以簡化和加速特定任務的執行。
最後,希望小景的這篇文章可以幫助您解決實際工作中的問題,有什麼問題可以評論區或者關注我的微信公眾號來交流。
本文來自部落格園,作者:慵懶的小景,轉載請註明原文連結:https://www.cnblogs.com/ailanlan/p/17781933.html
否則會進行維權,謝謝合作。