運營JAVA專案的你是否經歷過以下情況?
——程式能穩定運營,功能卻沒有響應。
——已經修復的Bug,在新版本上線後Bug依然存在,根本不知道問題出現在哪裡?
——程式穩定運營且功能完備,但跑了一段時間後,發現響應速度變慢了。
碰到這些問題,一般的解決方式都是修改程式碼、重新上線。但對於大企業,上線流程非常繁瑣,如果只是為了多加一行日誌而重新發布版本,想想就很折磨。
編輯
新增圖片註釋,不超過 140 字(可選)
今天給大家推薦一款開源的JAVA診斷工具——Arthas。
Arthas 是Alibaba公司研發的開源的JAVA診斷工具,採用了命令列互動的方式,進行排查JVM 相關問題的利器。自從開源以來,深受JAVA開發工程師的喜愛。
Arthas在github上的歡迎程度:
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
Arthas能做哪些事情?
(1) 能夠提供效能看板,包括執行緒、cpu、記憶體等資訊,並且會定時的重新整理
(2) 根據各種條件檢視執行緒快照。比如找出cpu佔用率最高的n個執行緒
(3) 輸出jvm的各種資訊,如gc演算法、jdk版本、ClassPath等
(4) 檢視/設定sysprop和sysenv
(5) 檢視某個類的靜態屬性,也可以透過ognl語法執行一些語句
(6) 檢視已載入的類的詳細資訊,比如這個類從哪個jar包載入的。也可以檢視類的方法的資訊
(7) dump某個類的位元組碼到指定目錄
(8) 反編譯相關指定的類
(9) 檢視類載入器的一些資訊
(10) 可以讓jvm重新載入某個類
(11) 監控方法的執行,同時能夠獲取到執行入參、出參以及丟擲異常
(12) 追蹤方法執行的呼叫棧和呼叫的時間
一、Arthas執行的工作原理
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
二、Arthas常用的命令列表
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
三、Arthas的具體使用和實踐
安裝:
Arthas在github的地址是https://alibaba.github.io/arthas/
安裝arthas的方式有很多種:
1. 直接下載一個可以啟動的jar包然後用java -jar的方式啟動
2. 用官方提供的as.sh指令碼一鍵安裝
3. 用rpm的方式安裝
這邊建議使用第一種方式,因為它簡單而且想遷移的時候也超級方便(畢竟只需要把下載的jar包複製走就行了)。
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
如果下載速度太慢,可以用gitee上的源
curl -O https://arthas.gitee.io/arthas-boot.jar
curl命令直接把arthas-boot.jar下載到你想要的目錄
[root@localhost ~]# ll -lrt
-rw-r--r--. 1 root root 138880 Jun 22 02:55 arthas-boot.jar
四、啟動
用java命令直接啟動
[root@localhost ~]# java -jar arthas-boot.jar --target-ip 10.45.105.248
[INFO] arthas-boot version: 3.3.3
[INFO] Can not find java process. Try to passin command line. Please select an available pid.
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
透過瀏覽器訪問 http://10.45.105.248:8563/:
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
透過dashboard命令可以檢視當前執行緒數和jvm記憶體情況:
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
透過watch 命令檢視返回的結果
編輯切換為居中
新增圖片註釋,不超過 140 字(可選)
五、Arthas其它命令
Arthas還提供了很多用於監控的命令,比如監控執行時間,反編譯線上的class檔案,甚至在不重啟java應用的情況下直接替換某個類。官方的使用文件已經寫得太詳細了,這裡就不再一一介紹了,大家可以自己嘗試。
參考:https://www.cnblogs.com/spareyaya/p/13177513.html
https://arthas.aliyun.com/doc/