1. 程式人生 > >推薦一款阿里開源的 Java 診斷工具,好用到爆!

推薦一款阿里開源的 Java 診斷工具,好用到爆!

Arthas是什麼鬼?

Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。

Arthas診斷使用的是命令列互動模式,支援JDK6+,Linux、Mac、Windows 作業系統,命令還支援使用 tab 鍵對各種資訊的自動補全,診斷起來非常利索。

這是它的官方網站:

https://alibaba.github.io/arthas/index.html

Github地址:

https://github.com/alibaba/arthas

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/arthas/arthas-boot.jar

[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/arthas/install-detail.html

實戰使用

啟動完成後,當前游標會進入 arthas 的控制檯,接受各種操作命令。

下面,棧長會做幾個常用命令的演示,讓大家對它有一個基本的認識和快速上手的能力。

1、dashboard

顯示當前系統的實時資料面板,按 ctrl+c 即可退出。

$ dashboard

2、thread

檢視當前 JVM 的執行緒堆疊資訊。

thread id, 顯示指定執行緒的執行堆疊:

$ thread 20

顯示當前最忙的前N個執行緒並列印堆疊:

$ thread -n 3

3、sc

檢視 JVM 已載入的類詳細資訊。

$ sc -d *Test

4、sm

檢視已載入類的方法資訊。

$ sm -d cn.javastack.springbootbestpractice.SpringBootBestPracticeApplication main

5、jad

反編譯指定已載入類的原始碼。

$ jad cn.javastack.springbootbestpractice.SpringBootBestPracticeApplication

6、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失敗率

8、watch

觀測方法執行資料,能方便的觀察到指定方法的呼叫情況,如:返回值、丟擲異常、入參等。

$ 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/arthas/commands.html

總結

總結下來,使用 Arthas 可以很方便的診斷一個 Java 應用程式,如:系統資料面板、JVM實時執行狀態、類載入情況、監控方法執行情況、顯示方法執行路徑等。

Arthas這些實用的功能確實可以幫助我們解決一些常見的線上問題,也能獨立於應用程式程式碼,但僅侷限於在一個 JVM 程序內,如果是分散式系統,Arthas就有點難了。

好了,今天的文章就到這了,你們也在用 Arthas 嗎?歡迎留言分享使用心得,如果覺得文章不錯,也可以分享給你的同學、同事們。

關注微信公眾號:Java技術棧,在後臺回覆 “工具” 可以獲取棧長分享的往期工具列表,後面有好的 Java 開發工具,棧長也會第一時間在公眾號分享。

本文原創首發於微信公眾號:Java技術棧(id:javastack),轉載請原樣保留本資訊。

相關推薦

推薦阿里開源Java 診斷工具

Arthas是什麼鬼? Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。

推薦不錯的偽原創工具

偽原創 偽原創檢測偽原創工具 偽原創是指把一篇原創的文章進行再加工,使其讓搜索引擎認為是一篇原創文章,從而提高網站權重。編輯方法有修改標題是關鍵和首尾段落總結兩種。 分別指數字替換法、詞語替換法、文字排序法、首段總結法、尾部總結法、新增加圖片、段落替換法、關鍵詞替換添加法。 所謂偽原創就是對一篇原創文章

推薦免費的PDF轉換工具 | PDFCandy

相信大家在用的PDF轉換工具也很多,下面良心推薦這款軟體(PDFCandy)給大家,方便在今後的工作中進行運用。提高大家的工作效率。 PDFCandy分為兩種:網頁端和客戶端。(根據大家的喜好度來進行選擇) 網頁端連結:https://pdfcandy.com/tw/ 客戶端:公眾號:IT行業技術圈後臺

遇見很受用的一個工具推薦給各位程式設計師

最近我在做一個電商專案,在設計資料庫表的時候遇到過這樣一個場景,商品表中的欄位特別多,設定完後產品經理又說改一下,然後改了一下,但是我程式碼中的實體卻有點問題,一直報欄位不對應,這裡大家就暫且不說什麼我為什麼不使用逆向工程之類的了。 就因為這個問題30多個欄位我改了好幾次,確實挺費事的,在上週我

推薦反編譯檔案的工具onekey-decompile-apk

做專案需要,花了一上午的時間研究了下反編譯工具,本文主要是如何獲取apk檔案中res中的資源。新手歡迎大家指點! 附上原文教程:https://code.google.com/p/onekey-decompile-apk 步驟: 1.下載onekey-decompile

推薦Python開源技術人必備的造資料神器

# 1. 背景 在軟體需求、開發、測試過程中,有時候需要使用一些測試資料,針對這種情況,我們一般要麼使用已有的系統資料,要麼需要手動製造一些資料。由於現在的業務系統資料多種多樣,千變萬化。在手動製造資料的過程中,可能需要花費大量精力和工作量,此項工作既繁複又容易出錯,比如要構造一批使用者三要素(姓名、手機

ImageCombiner - Java服務端圖片合成工具

  自己的第一個也是唯一一個開源專案,因為平時比較懶,很少做宣傳,今天剛好突破160個star,發到園子裡推薦給大家,算是慶祝一下,哈。 如果你也喜歡這個專案,記得幫忙star哦~ 專案地址:https://gitee.com/opensourcechen/image-combiner  

電腦小工具不花哨

net fast moni clean explorer capture explore cap u盤啟動盤制作工具 Everything 搜索軟件 Ccleaner 電腦清理軟件 Fast Stone Capture 電腦截圖加處理軟件 Ultralso u盤啟動盤制作工

提升效率的chrome外掛到沒朋友

作為一名骨子裡是文藝青年的工科女,今天給大家介紹幾款好用到沒朋友的chrome外掛,這些外掛讓我們的工作更加的高效,生活更加有情趣。在geek的路上越走越遠。 1. Momentum 逼格提升利器chrome桌面背景,每天早上開啟電腦辦公之前,就可以欣賞到一張美景。由

阿里開源java 診斷工具—— Arthas

Arthas 是 阿里巴巴最近開源出來的一個針對 java 的工具,主要是針對 java 的問題進行診斷! 一、概述     這個工具可以協助你做下面這些事情: 這個類是從哪個 jar 包載入而來的? 為什麼會報各種類相關的 Exception?

阿里內部的那個牛逼帶閃電的Java診斷工具終於開源

原文地址 在阿里巴巴內部,有很多自研工具供開發者使用,其中有一款工具,是幾乎每個Java開發都使用過的工具,那就是Arthas,這是一款Java診斷工具,是一款牛逼帶閃電的工具。該工具已於2018年9月份開源。 GitHub地址:https://github.com/alibaba/ar

推薦基於Java的音視訊處理開源專案--JAVE

http://blog.csdn.net/softwave/article/details/5819699 JAVE(Java Audio Video Encoder),是一款將音訊和視訊在不同格式間進行轉化的工具,是基於ffmpeg專案的Java封裝。 JAVE,

推薦專為Cesium開源數字地球平臺打造的免費資料處理工具

該工具既由【北京西部世界科技有限公司】提供 Cesiumlab是一款專為Cesium開源數字地球平臺打造的免費資料處理工具集。目前包含 地形資料處理、影像資料處理、點雲資料處理、資料下載、建築物向量面處理、傾斜資料處理、三維場景(max,maya)處理、BIM資料(r

推薦基於Java的音視訊處理開源專案 JAVE

                JAVE(Java Audio Video Encoder),是一款將音訊和視訊在不同格式間進行轉化的工具,是基於ffmpeg專案的Java封裝。JAVE,需要J2SE 1.4+、Windows 或 Linux 作業系統均可執行。JAVE支援的編碼和解碼格式見下表:Decodi

推薦非常java反編譯工具

The aim of “Java Decompiler” project is to develop tools to decompile and analyze Java 5, and upper, “.class” files. JD-Core is a freeware library that re

推薦Diffy:Twitter的開源自動化測試工具

1. Diffy是什麼 Diffy是一個開源的自動化測試工具,是一種Diff測試技術。它能夠自動檢測基於Apache Thrift或者基於HTTP的服務。通過同時執行新/老程式碼,對比執行結果,發現潛在bug。使用Diffy,只需要進行簡單的配置,之後不需要再編寫測試程式碼。   2

推薦10流行的java開源的網絡爬蟲

java爬蟲 網絡爬蟲 1:JAVA爬蟲WebCollector(Star:1345)爬蟲簡介: WebCollector是一個無須配置、便於二次開發的JAVA爬蟲框架(內核),它提供精簡的的API,只需少量代碼即可實現一個功能強大的爬蟲。WebCollector-Hadoop是WebCollecto

推薦華為最新的自動化代碼檢查工具

簡化 htm 獲得 修煉 product pos java 事情 是的 作為一枚軟件攻城獅,你是不是總覺得自己擼代碼的能力還有待提高卻又無從下手?你是不是看到過XX大神美輪美奐的代碼,然後佩服的五(ren)體(yang)投(ma)地(fan),然後躲在暗房裏哭。然後你下定決

推薦編輯SQL的工具:jsqlparser

for git 更強 追加 In 操作性 IT 很多 而是 這個工具真的挺好用的,采用的是觀察者模式,Visitor。 雖然我學過這個模式,但是乍一用還是有點懵逼的。 給好一個SQL語句之後,jsqlparser可以把這個sql語句給分解成all kind of par

推薦MongoDB的客戶端管理工具--nosqlbooster

技術分享 sms def 方式 rip tab tor error 好用 今天給大家推薦一款MongoDB的客戶端工具--nosqlbooster,這個也是我工作中一直使用的連接管理MongoDB的工具。這個工具還有個曾用名--mongobooster。nosqlboost