摘要:是什么鬼是一款阿里巴巴開源的線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。診斷使用的是命令行交互模式,支持,操作系統,命令還支持使用鍵對各種信息的自動補全,診斷起來非常利索。顯示當前系統的實時數據面板,按即可退出。
Arthas是什么鬼?
Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。
Arthas診斷使用的是命令行交互模式,支持JDK6+,Linux、Mac、Windows 操作系統,命令還支持使用 tab 鍵對各種信息的自動補全,診斷起來非常利索。
這是它的官方網站:
https://alibaba.github.io/art...
Github地址:
https://github.com/alibaba/ar...Arthas能解決什么問題?
讓我們來看下 Arthas 的官方解釋。
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
1、這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
2、我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
3、遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
4、線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
5、是否有一個全局視角來查看系統的運行狀況?
6、有什么辦法可以監控到JVM的實時運行狀態?
看完是不是覺得太牛逼了?
特別是它可以在線反編譯類,可以不用加日志在線調試跟蹤問題代碼。
既然這么牛逼,肯定有不少公司在使用吧,下面列出了官方給出的使用登錄順序圖。
快速安裝官方推薦使用 arthas-boot 進行安裝,非常方便,以下是基于 Linux 系統環境進行演示,一般解決線上問題也是基于 Linux 環境。
第一步:下載在任何目錄下載 arthas-boot 這個包。
wget https://alibaba.github.io/art...
[root@VM_0_7_centos ~]# wget https://alibaba.github.io/arthas/arthas-boot.jar --2019-07-30 14:48:31-- https://alibaba.github.io/arthas/arthas-boot.jar Resolving alibaba.github.io (alibaba.github.io)... 185.199.108.153, 185.199.109.153, 185.199.110.153, ... Connecting to alibaba.github.io (alibaba.github.io)|185.199.108.153|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 98637 (96K) [application/java-archive] Saving to: ‘arthas-boot.jar’ 100%[==========================================================================================================>] 98,637 32.8KB/s in 2.9s 2019-07-30 14:48:36 (32.8 KB/s) - ‘arthas-boot.jar’ saved [98637/98637]第二步:運行
使用 java -jar 命令執行 arthas-boot 包。
java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.1.1 [INFO] Found existing java process, please choose one and hit RETURN. * [1]: 13062 spring-boot-best-practice-0.0.1-SNAPSHOT.jar第三步:選擇進程
運行 arthas-boot 后,控制臺會顯示所有 Java 進程,選擇一個你需要診斷的進程。
如第二步所示,這里有只有一個 Java 進程,輸入序號1,回車,Arthas會附到目標進程上,并輸出日志:
[INFO] Start download arthas from remote server: https://maven.aliyun.com/repository/public/com/taobao/arthas/arthas-packaging/3.1.1/arthas-packaging-3.1.1-bin.zip [INFO] Download arthas success. [INFO] arthas home: /root/.arthas/lib/3.1.1/arthas [INFO] Try to attach process 13062 [INFO] Attach process 13062 success. [INFO] arthas-client connect 127.0.0.1 3658 ,---. ,------. ,--------.,--. ,--. ,---. ,---. / O | .--. ""--. .--"| "--" | / O " .-" | .-. || "--"." | | | .--. || .-. |`. `-. | | | || | | | | | | || | | |.-" | `--" `--"`--" "--" `--" `--" `--"`--" `--"`-----" wiki https://alibaba.github.io/arthas tutorials https://alibaba.github.io/arthas/arthas-tutorials version 3.1.1 pid 13062 time 2019-07-30 14:49:34
至此,安裝、啟動完成。
更多其他安裝方式見:https://alibaba.github.io/art...
實戰使用啟動完成后,當前光標會進入 arthas 的控制臺,接受各種操作命令。
下面,棧長會做幾個常用命令的演示,讓大家對它有一個基本的認識和快速上手的能力。
1、dashboard顯示當前系統的實時數據面板,按 ctrl+c 即可退出。
$ dashboard2、thread
查看當前 JVM 的線程堆棧信息。
thread id, 顯示指定線程的運行堆棧:
$ thread 20
顯示當前最忙的前N個線程并打印堆棧:
$ thread -n 33、sc
查看 JVM 已加載的類詳細信息。
$ sc -d *Test4、sm
查看已加載類的方法信息。
$ sm -d cn.javastack.springbootbestpractice.SpringBootBestPracticeApplication main5、jad
反編譯指定已加載類的源代碼。
$ jad cn.javastack.springbootbestpractice.SpringBootBestPracticeApplication6、trace
顯示方法內部調用路徑,非實時返回的命令并輸出方法路徑上的總耗時,以及的每個節點上的詳細耗時。
$ trace -j cn.javastack.springbootbestpractice.web.JsonTest getUserInfo
-j:表示跳過 JDK 中的方法路徑。
7、monitor對某個方法的調用進行定時監控。
$ monitor cn.javastack.springbootbestpractice.web.JsonTest getUserInfo -c 5
-c 5:表示每5秒統計一次,統計周期,默認值為120秒。
監控維度說明:
監控項 | 說明 |
---|---|
timestamp | 時間戳 |
class | 類名 |
method | 方法名 |
total | 調用次數 |
success | 成功次數 |
fail | 失敗次數 |
rt | 平均響應時間 |
fail-rate | 失敗率 |
觀測方法執行數據,能方便的觀察到指定方法的調用情況,如:返回值、拋出異常、入參等。
$ watch cn.javastack.springbootbestpractice.web.JsonTest getUserInfo "{params, returnObj}" -x 2 -b
以上監控的是一個方法的入參情況,在方法執行前監控:-b,遍歷深度:-x 2。
9、quit/exit退出當前 Arthas。
這個命令僅退出當前連接的客戶端,附到目標進程上的 Arthas 會繼續運行,端口不會關閉,下次連接時可以直接連接使用。
10、shutdown關閉 Arthas 服務端,退出所有 Arthas 客戶端。
以上演示了 10 個命令的基本使用,各種命令的使用詳情可以在命令帶 --help 進行查閱。
更多其他命令請參考:
https://alibaba.github.io/art...總結
總結下來,使用 Arthas 可以很方便的診斷一個 Java 應用程序,如:系統數據面板、JVM實時運行狀態、類加載情況、監控方法執行情況、顯示方法執行路徑等。
Arthas這些實用的功能確實可以幫助我們解決一些常見的線上問題,也能獨立于應用程序代碼,但僅局限于在一個 JVM 進程內,如果是分布式系統,Arthas就有點難了。
好了,今天的文章就到這了,你們也在用 Arthas 嗎?歡迎留言分享使用心得,如果覺得文章不錯,也可以分享給你的同學、同事們。
關注微信公眾號:Java技術棧,在后臺回復 “工具” 可以獲取棧長分享的往期工具列表,后面有好的 Java 開發工具,棧長也會第一時間在公眾號分享。
本文原創首發于微信公眾號:Java技術棧(id:javastack),轉載請原樣保留本信息。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75690.html
摘要:推薦幾款比較好用的的插件,它能夠幫助我們更加快速的開發,具體有以下分類快速開發樣式界面便捷工具快速開發功能介紹代碼自動生成插件,大部分單表操作的代碼可自動生成減少重復勞動大幅提升效率開源地址功能介紹解析格式的數據,然后快速的幫你生成對應的類 推薦幾款比較好用的idea的插件,它能夠幫助我們更加快速的開發,具體有以下分類: 快速開發 樣式界面 便捷工具 快速開發 MyBatisCod...
摘要:淘寶定制基于,是國內第一個優化定制且開源的服務器版虛擬機。數據庫開源數據庫是基于官方版本的一個分支,由阿里云數據庫團隊維護,目前也應用于阿里巴巴集團業務以及阿里云數據庫服務。淘寶服務器是由淘寶網發起的服務器項目。 Java JAVA 研發框架 SOFAStack SOFAStack(Scalable Open Financial Architecture Stack)是用于快速構建金融...
摘要:月日北京阿里云峰會,阿里巴巴正式宣布對外開源長期支持版本。此次,阿里巴巴發布的預覽版本對應的版本。同時對于阿里云,會針對的兩個版本和隨阿里云鏡像發布,免費提供給阿里云客戶使用。年月,發布,根據阿里大數據場景的定制版發布。 3 月 21 日北京阿里云峰會,阿里巴巴正式宣布對外開源 OpenJDK 長期支持版本 Alibaba Dragonwell。作為 Java 全球管理組織 Java ...
閱讀 1673·2021-11-15 11:38
閱讀 4514·2021-09-22 15:33
閱讀 2332·2021-08-30 09:46
閱讀 2176·2019-08-30 15:43
閱讀 827·2019-08-30 14:16
閱讀 2069·2019-08-30 13:09
閱讀 1255·2019-08-30 11:25
閱讀 701·2019-08-29 16:42