小景最近在做程式和資料庫的壓測工作,期間監控壓測數據,分析程式原因變成了一個待解決的問題,根據公司小伙伴的建議,接觸了阿爾薩斯這個診斷工具,下麵小景分別基於Linux操作系統和Windows操作系統,來詳細的說下使用說明和使用心得。 Arthas(阿爾薩斯)是一個用於診斷Java應用程式的開源工具, ...
小景最近在做程式和資料庫的壓測工作,期間監控壓測數據,分析程式原因變成了一個待解決的問題,根據公司小伙伴的建議,接觸了阿爾薩斯這個診斷工具,下麵小景分別基於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目錄。
-
-
打開命令行界面:
- 在Windows系統中,您可以使用命令提示符(Command Prompt)或PowerShell。打開一個新的命令行界面視窗。
-
啟動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:
- 要退出Arthas,您可以在Arthas命令行界面中使用
quit
命令。
- 要退出Arthas,您可以在Arthas命令行界面中使用
-
在Windows系統上,確保您具有足夠的許可權來連接到目標Java應用程式,並根據需要處理特殊字元的轉義。
最後,再來說下Arthas的拓展和延申:
以下是更詳細的方式來拓展和延伸Arthas的功能:
-
自定義命令:
Arthas允許您創建自定義命令,這些命令可以用於執行特定的診斷或調試任務。您可以編寫自定義命令的插件,以擴展Arthas的功能。這些自定義命令可以是Groovy腳本,以實現各種自定義操作。創建自定義命令的一般步驟如下:
- 編寫Groovy腳本,其中包含自定義操作。
- 將腳本放置在Arthas的自定義命令目錄下,通常是
~/.arthas/commands
(Linux/macOS)或%USERPROFILE%\.arthas\commands
(Windows)。 - 在Arthas中使用自定義命令名稱來調用您的腳本。
這使您能夠根據具體需求創建自定義命令,以執行特定的分析或調試任務。
-
使用Arthas插件系統:
Arthas具有插件系統,您可以使用該系統編寫自定義插件來擴展Arthas的功能。插件可以包括自定義命令、自定義函數、拓展性能監控等等。創建Arthas插件的一般步驟如下:
- 編寫Groovy腳本或Java代碼,實現自定義插件功能。
- 將插件打包為JAR文件。
- 將JAR文件放置在Arthas的插件目錄下,通常是
~/.arthas/lib
(Linux/macOS)或%USERPROFILE%\.arthas\lib
(Windows)。 - 在Arthas中使用插件的功能。
插件系統使您能夠將自定義功能完全集成到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
否則會進行維權,謝謝合作。