Arthas 簡介
Arthas
是Alibaba開源的Java診斷工具,深受開發者喜好。html
Arthas
支持 JDK 6+
,支持 Linux
、Mac
、Windows
,採用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。java
Arthas 能幫你解決的問題
-
一、這個類從哪一個 jar 包加載的?爲何會報各類類相關的 Exception? -
二、我改的代碼爲何沒有執行到?難道是我沒 commit?分支搞錯了? -
三、遇到問題沒法在線上 debug,難道只能經過加日誌再從新發布嗎? -
四、線上遇到某個用戶的數據處理有問題,但線上一樣沒法 debug,線下沒法重現! -
五、是否有一個全局視角來查看系統的運行情況? -
六、有什麼辦法能夠監控到JVM的實時運行狀態? -
七、怎麼快速定位應用的熱點,生成火焰圖?
Arthas 安裝
使用 as.sh
Arthas 支持在 Linux/Unix/Mac 等平臺上一鍵安裝,請複製如下內容,並粘貼到命令行中,敲 回車
執行便可:git
$ curl -L https://alibaba.github.io/arthas/install.sh | sh
上述命令會下載啓動腳本文件 as.sh
到當前目錄
,你能夠放在任何地方或將其加入到 $PATH
中。github
直接在shell下面執行 ./as.sh
,就會進入交互界面。web
也能夠執行 ./as.sh -h
來獲取更多參數信息。docker
手動安裝
經過 rpm/deb 來安裝shell
在releases頁面下載rpm/deb包:https://github.com/alibaba/arthas/releasesbash
# 安裝deb
$ sudo dpkg -i arthas*.deb
# 安裝rpm
$ sudo rpm -i arthas*.rpm
# deb/rpm安裝的用法,在安裝後,能夠直接執行
$ as.sh
啓動 Arthas
在命令行下面執行(使用和目標進程一致的用戶啓動,不然可能attach失敗):微信
$ curl -O https://alibaba.github.io/arthas/arthas-boot.jar
$ java -jar arthas-boot.jar
-
執行該程序的用戶須要和目標進程具備相同的權限。好比以admin用戶來執行: sudo su admin && java -jar arthas-boot.jar
或sudo -u admin -EH java -jar arthas-boot.jar
。 -
若是attach不上目標進程,能夠查看 ~/logs/arthas/
目錄下的日誌。 -
若是下載速度比較慢,可使用aliyun的鏡像: java -jar arthas-boot.jar --repo-mirror aliyun --use-http
-
java -jar arthas-boot.jar -h
打印更多參數信息。
選擇應用java進程:網絡
$ $ java -jar arthas-boot.jar
* [1]: 35542
[2]: 71560 arthas-demo.jar
Demo進程是第2個,則輸入2,再輸入 回車/enter
。Arthas會attach到目標進程上,並輸出日誌:
[INFO] Try to attach process 71560
[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki: https://alibaba.github.io/arthas
version: 3.0.5.20181127201536
pid: 71560
time: 2018-11-28 19:16:24
$
Dashboard
# 在上面基礎環境中執行 dashboard 命令
$ dashboard
在線演示
-
基礎教程
:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics -
進階教程
:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
基於 Docker 診斷 Java 進程
診斷 Docker 裏的 Java 進程
$ docker exec -it ${containerId} /bin/bash -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"
診斷 k8s 裏容器裏的 Java 進程
$ kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"
把 Arthas 打包到基礎鏡像裏
FROM openjdk:8-jdk-alpine
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
若是想指定版本
,能夠查看具體的tags:https://hub.docker.com/r/hengyunabc/arthas/tags
總結
Arthas
是一個強大的 Java 診斷工具,能夠分析 Java 代碼bug帶來的資源消耗等問題。
Arthas 詳細使用方法,公衆號後臺回覆 Arthas
獲取Arthas詳細參數思惟導圖。
Golang 微服務 1元 輕鬆購買
參考連接
-
Arthas
快速入門 https://alibaba.github.io/arthas/quick-start.html -
https://github.com/alibaba/arthas/blob/master/README_CN.md
熱門文章推薦
-
K8S故障排查指南- but volume paths are still present on disk -
適用於CI容器漏洞掃描神器 -
Redis 內存分析神器 -
實時Web日誌分析器 -
容器化配置生成神器 -
從 Docker 到 Kubernetes 日誌管理機制詳解 -
Kubernetes 私有集羣 LoadBalancer 解決方案 -
K8S Pod 內抓包快速定位網絡問題
最後
-
歡迎您加我微信【 ypxiaozhan01】,拉您進技術羣,一塊兒交流學習... -
歡迎您關注【 YP小站】,學習互聯網最流行的技術,作個專業的技術人...
本文分享自微信公衆號 - YP小站(ypxiaozhan)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。