Java-arthas分析工具實戰

Java-arthas分析工具實戰

Java-arthas分析工具實戰

4:啟動業務服務 java -jar cad-attach-backend-3。0。3-SNAPSHOT。jar,如圖

Java-arthas分析工具實戰

服務啟動完成後,在本地瀏覽器檢查服務的swagger地址是不是能夠正常訪問

5:win+r 輸入cmd然後進入到arthas-boot。jar包位置(建議和業務服務放在同一個目錄位置),輸入java -jar arthas-boot。jar命令,如圖:

Java-arthas分析工具實戰

這個時候就可以看到我們第四步操作啟動的附件服務,輸入1,這裡注意選中後需要有外網條件,會從阿里伺服器下載相應檔案

Java-arthas分析工具實戰

這裡在arthas上進入到附件服務的診斷目錄下,根據上面提供的埠資訊(已經測試上面3658和8563二個埠都可以訪問,並且是指向同一個程序ID),可以訪問地址如圖:

Java-arthas分析工具實戰

常用分析命令使用

dashboard

Java-arthas分析工具實戰

ID是Java 內部執行緒ID

Name 執行緒名

GROUP 所屬組 系統級別和程式級別

PRIORITY 許可權

STATE 執行緒狀態

%CPU CPU佔比

TIME 時間

tarce

1:trace跟蹤主要是跟蹤目前服務中具體的方法

Java-arthas分析工具實戰

——skipJDKMethod false 是否跳過JDK內部方法 false不跳過 true標識跳過

com。gsafety。cad。attach。service。serviceimpl。AttachServiceImpl 是類AttachServiceImpl的package路徑位置

batchUpload是類AttachServiceImpl中的一個方法

thread

顯示當前所有的執行緒資訊,如圖:

Java-arthas分析工具實戰

說明ID: Java級別的執行緒ID,注意這個ID不能跟jstack中的nativeID一一對應NAME: 執行緒名GROUP: 執行緒組名PRIORITY: 執行緒優先順序, 1~10之間的數字,越大表示優先順序越高STATE: 執行緒的狀態CPU%: 執行緒消耗的cpu佔比,取樣100ms,將所有執行緒在這100ms內的cpu使用量求和,再算出每個執行緒的cpu使用佔比。TIME: 執行緒執行總時間,資料格式為分:秒INTERRUPTED: 執行緒當前的中斷位狀態DAEMON: 是否是daemon執行緒透過上述資訊,可以幫助我們快速定位相關問題執行緒。thread ID注意, 目前只支援找出synchronized關鍵字阻塞住的執行緒, 如果是java。util。concurrent。Lock, 目前還不支援。thread -n ID -i 1000-i 1000 間隔1S取樣thread ——state WAITING/RUNNABLE過濾執行緒狀態

檢視具體執行緒ID的內容,如圖:

Java-arthas分析工具實戰

watch

com。gsafety。cad。attach。service。serviceimpl 是package路徑

AttachServiceImpl 是類名

batchUpload 是類中具體的方法名

Java-arthas分析工具實戰

Java-arthas分析工具實戰

Java-arthas分析工具實戰

上面的方法被呼叫後如上是一個get方法,可以顯示查詢消耗時間以及查詢資料Size

logger

獲取classloaderHash值logger -n com。gs。systemmanager。controller根據classloaderHash檢視日誌資訊logger -c [classloaderHash]

monitor

10 標識監聽次數com。gs。systemmanager。controller package地址getAllUserInfo 方法名monitor -c 10 com。gs。systemmanager。controller getAllUserInfo

help

幫助命令 help 可以檢視所有的命令

檢視具體命令的使用 比如:trace -help

history

是使用命令的歷史記錄,如圖;

Java-arthas分析工具實戰