當前位置:網站首頁>JVM調試工具-Arthas

JVM調試工具-Arthas

2022-06-24 07:04:51Angryshark_128

下載地址

鏈接:https://pan.baidu.com/s/1CMAR1wto-vSLIeKtlCsXJQ
提取碼:naza

啟動Arthas

> java -jar arthas-boot.jar --target-ip=0.0.0.0

在這裏插入圖片描述

輸入序號選擇要查看的進程

在這裏插入圖片描述

  1. 執行該程序的用戶需要和目標進程具有相同的權限。比如以admin用戶來執行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar。

  2. 如果attach不上目標進程,可以查看~/logs/arthas/ 目錄下的日志。

瀏覽器查看

在這裏插入圖片描述

監控相關

執行方法監控-monitor 類名 方法

[[email protected]]> monitor com.*.*.PointerDao.SnidModel toString

在這裏插入圖片描述

查看函數返回值-watch 類名 函數名 returnObj

[[email protected]]> watch com.oidd.*.Common.* encrypt returnObj

在這裏插入圖片描述

查看進程信息-dashboard

[[email protected]]> dashboard

在這裏插入圖片描述

方法內部調用路徑,並輸出方法路徑上的每個節點上耗時-trace

輸出當前方法被調用的調用路徑-stack

方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不同的時間下調用進行觀測-tt

生成火焰圖-profiler

profiler 命令支持生成應用熱點的火焰圖。本質上是通過不斷的采樣,然後把收集到的采樣結果生成火焰圖。

profiler 命令基本運行結構是 profiler action [actionArg]

參數說明
參數名稱	參數說明
action	要執行的操作
actionArg	屬性名模式
[i:]	采樣間隔(單比特:ns)(默認值:10'000'000,即10 ms)
[f:]	將輸出轉儲到指定路徑
[d:]	運行評測指定秒
[e:]	要跟踪哪個事件(cpu, alloc, lock, cache-misses等),默認是cpu

啟動profiler

$ profiler start
Started [cpu] profiling

默認情况下,生成的是cpu的火焰圖,即event為cpu。可以用–event參數來指定。

獲取已采集的sample的數量

$ profiler getSamples
23

查看profiler狀態

$ profiler status
[cpu] profiling is running for 4 seconds

可以查看當前profiler在采樣哪種event和采樣時間。

停止profiler

生成svg格式結果

$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK

默認情况下,生成的結果保存到應用的工作目錄下的arthas-output目錄。可以通過 --file參數來指定輸出結果路徑。比如:

$ profiler stop --file /tmp/output.svg
profiler output file: /tmp/output.svg
OK

生成html格式結果
默認情况下,結果文件是svg格式,如果想生成html格式,可以用–format參數指定:

$ profiler stop --format html
profiler output file: /tmp/test/arthas-output/20191125-143329.html
OK

或者在–file參數裏用文件名指名格式。比如–file /tmp/result.html 。

通過瀏覽器查看arthas-output下面的profiler結果
默認情况下,arthas使用3658端口,則可以打開: http://localhost:3658/arthas-output/ 查看到arthas-output目錄下面的profiler結果

點擊可以查看具體的結果:

如果是chrome瀏覽器,可能需要多次刷新。

JVM相關命令

打印指定線程棧-thread 線程ID

[[email protected]]> thread 2742303

在這裏插入圖片描述

查看JVM信息-jvm

[[email protected]]> jvm

在這裏插入圖片描述

查看JVM環境變量-sysenv

[[email protected]]> sysenv

在這裏插入圖片描述

查看JVM系統屬性-sysprop

[[email protected]]> sysprop

在這裏插入圖片描述

查看JVM診斷配置-vmoption

[[email protected]]> vmoption

查看當前 JVM 的Perf Counter信息-perfcounter

查看和修改logger-logger

查看類的靜態屬性-getstatic

執行ognl錶達式-ognl

查看 Mbean 的信息-mbean

查看堆信息-heapdump

類相關命令

查看已加載的類-sc 通配符

[[email protected]]> sc *

在這裏插入圖片描述

查看已加載的方法-sm 通配符

[[email protected]]> sm *

在這裏插入圖片描述

反編譯類—jad 類名

[[email protected]]> jad  com.*.*.Common.GlobalVariable

在這裏插入圖片描述

內存編譯器,內存編譯.java文件為.class文件-mc

加載外部的.class文件,redefine到JVM裏-redefine

dump已加載類的 byte code 到特定目錄-dump

查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource-classloader

其他基礎命令

help——查看命令幫助信息

cat——打印文件內容,和linux裏的cat命令類似

echo–打印參數,和linux裏的echo命令類似

grep——匹配查找,和linux裏的grep命令類似

tee——複制標准輸入到標准輸出和指定的文件,和linux裏的tee命令類似

pwd——返回當前的工作目錄,和linux命令類似

cls——清空當前屏幕區域

session——查看當前會話的信息

reset——重置增强類,將被 Arthas 增强過的類全部還原,Arthas 服務端關閉時會重置所有增强過的類

version——輸出當前目標 Java 進程所加載的 Arthas 版本號

history——打印命令曆史

quit——退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響

stop——關閉 Arthas 服務端,所有 Arthas 客戶端全部退出

keymap——Arthas快捷鍵列錶及自定義快捷鍵

版權聲明
本文為[Angryshark_128]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/175/202206240050385302.html

隨機推薦