4:啟動業務服務 java -jar cad-attach-backend-3。0。3-SNAPSHOT。jar,如圖
服務啟動完成後,在本地瀏覽器檢查服務的swagger地址是不是能夠正常訪問
5:win+r 輸入cmd然後進入到arthas-boot。jar包位置(建議和業務服務放在同一個目錄位置),輸入java -jar arthas-boot。jar命令,如圖:
這個時候就可以看到我們第四步操作啟動的附件服務,輸入1,這裡注意選中後需要有外網條件,會從阿里伺服器下載相應檔案
這裡在arthas上進入到附件服務的診斷目錄下,根據上面提供的埠資訊(已經測試上面3658和8563二個埠都可以訪問,並且是指向同一個程序ID),可以訪問地址如圖:
常用分析命令使用
dashboard
ID是Java 內部執行緒ID
Name 執行緒名
GROUP 所屬組 系統級別和程式級別
PRIORITY 許可權
STATE 執行緒狀態
%CPU CPU佔比
TIME 時間
tarce
1:trace跟蹤主要是跟蹤目前服務中具體的方法
——skipJDKMethod false 是否跳過JDK內部方法 false不跳過 true標識跳過
com。gsafety。cad。attach。service。serviceimpl。AttachServiceImpl 是類AttachServiceImpl的package路徑位置
batchUpload是類AttachServiceImpl中的一個方法
thread
顯示當前所有的執行緒資訊,如圖:
說明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的內容,如圖:
watch
com。gsafety。cad。attach。service。serviceimpl 是package路徑
AttachServiceImpl 是類名
batchUpload 是類中具體的方法名
上面的方法被呼叫後如上是一個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
是使用命令的歷史記錄,如圖;