遠程監控配置
- 目標服務器上傳arthas-boot.jar 包
- 本地運行java -jar arthas-tunnel-server.jar
- 遠程運行
java -jar arthas-boot.jar --tunnel-server ws://192.168.10.16:7777/ws
ip是步驟2中機器的ip地址
命令
dashboard——當前系統的實時數據面板
dashboard -i 3000 -n 5
每隔3秒5次的打印
thread——查看當前 JVM 的線程堆棧信息
thread
打印當前線程信息thread [id]
thread -b
找出當前阻塞其他線程的線程thread -n 5
打印前五名最消耗CPU的線程,可以及時找到CPU過高的代碼位置thread -n 3 -i 1000
列出1000ms內最忙的3個線程棧
jvm——查看當前 JVM 的信息
classloader——展示類加載器信息
heapdump——dump到指定文件
heapdump /tmp/dump.hprof
heapdump --live /tmp/dump.hprof
只dump live對象heapdump
dump到臨時文件
vmoption——查看,更新VM診斷相關的參數
vmoption
查看所有的optionvmoption PrintGC
查看指定的optionvmoption PrintGC true
更新指定的option
sysprop——查看和修改JVM的系統屬性
sysprop
查看所有屬性sysprop java.version
查看單個屬性sysprop user.country CN
修改單個屬性
sysenv——查看JVM的環境變量
sysenv
查看所有環境變量sysenv USER
查看單個環境變量
getstatic——查看類的靜態屬性
getstatic class_name field_name
vmtool——強制GC
vmtool --action forceGc
classloader——展示類加載器信息
jad——反編譯類
jad java.lang.String
反編譯
jad --source-only demo.MathGame
反編譯時只顯示源代碼
jad demo.MathGame main
反編譯指定的函數
jad demo.MathGame main --lineNumber false
反編譯時不顯示行號
monitor——監控某個函數的調用統計數據,包括總調用次數,平均運行時間,成功率等信息
monitor [類權限定名] [方法名]
monitor com.isyscore.iios.dicp.os.security.filter.AuthenticationTokenFilter doFilterInternal
trace——查看某個函數的哪個子調用最慢【重點】,耗時最久的調用會標紅顯示,可以方便找出某個功能中最耗時的操作
trace [類權限定名] [方法名]
trace com.isyscore.iios.dicp.os.security.filter.AuthenticationTokenFilter doFilterInternal
trace demo.MathGame run -n 1
trace次數限制
trace --skipJDKMethod false demo.MathGame run
包含jdk的函數
trace demo.MathGame run '#cost > 10'
據調用耗時過濾
stack——查看某個函數的調用堆棧
stack [類權限定名] [方法名]
stack com.isyscore.iios.dicp.os.security.filter.AuthenticationTokenFilter doFilterInternal
logger——查看logger信息,更新logger level
logger --name ROOT --level debug
更新logger level