簡介
- Arthas 是阿里巴巴開源的一套監控java應用的工具
- 官網的文檔地址:
https://arthas.aliyun.com/doc/
- 官方的簡介說明:
- Arthas 是Alibaba開源的Java診斷工具,深受開發者喜愛。
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
是否有一個全局視角來查看系統的運行狀況?
有什么辦法可以監控到JVM的實時運行狀態?
怎么快速定位應用的熱點,生成火焰圖?
怎樣直接從JVM內查找某個類的實例?
下載
- 建議下載全量包,避免僅下載boot無網絡情況下無法使用
https://arthas.aliyun.com/download/latest_version?mirror=aliyun
- 2022.3.22時最新的版本是
3.5.6
簡單使用
- 注意這里僅介紹一些基本的使用(復雜的我還沒學習)
- 第一次安裝和啟動
打開命令
注意1: 需要使用一個安裝比較完整的jdk, 如果僅是jre可能無法運行
比如我這邊的jdk的安裝路徑為
/myapp/server/runtime/java/x86_64linux/bin/java
那么我就可以如此運行
1. 將壓縮包上傳到某一個路徑,並且解壓縮:
比如我這邊上傳到了 /arthas/目錄.
2. 執行命令為:
/myapp/server/runtime/java/x86_64linux/bin/java -jar /arthas/arthas-boot.jar --target-ip 10.110.83.xx
注意: 可以直接使用jdk全路徑的java 二進制文件執行 -jar 命令
注意: 可以直接使用 --target-ip 的方式暴露一下 arthas的端口出來. 默認為 3658
注意: 打開 3658的防火牆(建議僅打開部分,不要全部打開,避免安全問題)
簡單使用
[root@centos7ver2009 ~]# /myapp/server/runtime/java/x86_64-linux/bin/java -jar arthas-boot.jar --target-ip 10.110.83.113
[INFO] arthas-boot version: 3.5.3
[INFO] Process 4318 already using port 3658
[INFO] Process 4318 already using port 8563
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 4318 ./server/runtime/caf-bootstrap.jar
[2]: 8034 sun.tools.jconsole.JConsole
[3]: 4406 ./dmp-datafactory.jar
[4]: 4615 ./runtime/rtf-operations-management-bootstrap.jar
[5]: 4317 ./runtime/rtf-operations-management-bootstrap.jar
1
[INFO] arthas home: /root/.arthas/lib/3.5.6/arthas
[INFO] The target process already listen port 3658, skip attach.
[INFO] arthas-client connect 10.110.83.113 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki https://arthas.aliyun.com/doc
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
version 3.5.6
main_class
pid 4318
time 2022-03-22 08:08:40
簡單使用
- 注意可以使用網頁端也可以實名 shell 進行處理. 如果有堡壘機比較復雜,建議可以打開端口使用網頁進行監控
- 注意arthas監控會造成一定程度的性能下降.強烈不建議用於高壓力的高峰時段生產環境
- 打開網頁 比如我這邊就是 http://10.110.83.xx:3658
- 效果圖為:

- 可以直接在黑框里面輸入命令進行調試
重要命令介紹
help
打印命令幫助
dashboard
會展示 線程和內存信息.
cls
清空已有的內容
thread
顯示所有的進程信息
thread -b
打印被鎖的進程
thread -n 10
打印占用CPU最多的十個進程
jvm
打印java的信息
profiler start / profiler stop
打印火焰圖, 有一個默認轉儲的路徑.
sysprop
打印jvm相關參數信息