远程监控配置
- 目标服务器上传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