JVM调试工具-Arthas

下载地址

链接: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 类名 方法

[arthas@22508]> monitor com.*.*.PointerDao.SnidModel toString

在这里插入图片描述

查看函数返回值-watch 类名 函数名 returnObj

[arthas@22508]> watch com.oidd.*.Common.* encrypt returnObj

在这里插入图片描述

查看进程信息-dashboard

[arthas@22508]> 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

[arthas@22508]> thread 2742303

在这里插入图片描述

查看JVM信息-jvm

[arthas@22508]> jvm

在这里插入图片描述

查看JVM环境变量-sysenv

[arthas@22508]> sysenv

在这里插入图片描述

查看JVM系统属性-sysprop

[arthas@22508]> sysprop

在这里插入图片描述

查看JVM诊断配置-vmoption

[arthas@22508]> vmoption

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

查看和修改logger-logger

查看类的静态属性-getstatic

执行ognl表达式-ognl

查看 Mbean 的信息-mbean

查看堆信息-heapdump

类相关命令

查看已加载的类-sc 通配符

[arthas@22508]> sc *

在这里插入图片描述

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

[arthas@22508]> sm *

在这里插入图片描述

反编译类—jad 类名

[arthas@22508]> 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快捷键列表及自定义快捷键

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页