Arthas命令使用

355 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

命令大全

1. 使用docker进入arthas命令

docker exec -it  6a04266c2a48 /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"
如图所示

在这里插入图片描述


红色区域为执行的代码块

黄色区域为每个项目对应的${containerId}

蓝色区域为要监控的项目(输入1进入到arthas)

在这里插入图片描述

2. 使用k8s进入arthas命令

kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"

3. 查看当前jvm信息

命令描述
jvm查看当前jvm信息
jvm / grep PATH查找Java应用的classpath

jvm中参数说明 RUNTIME(内存管理)参数说明

MACHINE-NAME                                机器名
JVM-START-TIME                              jvm运行开始时间
MANAGEMENT-SPEC-VERSION                     管理规范版本
SPEC-NAME                                   规范名称
SPEC-VENDOR                                 规范提供商
SPEC-VERSION                                规范版本
VM-NAME                                     虚拟机名称
VM-VENDOR                                   虚拟机提供者
VM-VERSION                                  虚拟机版本
INPUT-ARGUMENTS                             输入参数
CLASS-PATH                                  类路径
BOOT-CLASS-PATH                             引导类路径
LIBRARY-PATH                                库路径

CLASS-LOADING (类加载)参数说明

LOADED-CLASS-COUNT                          装载类计数
TOTAL-LOADED-CLASS-COUNT                    总类数
UNLOADED-CLASS-COUNT                        非类计数
IS-VERBOSE                                  是否冗余

COMPILATION (编译)参数说明

NAME                                        编译机器名称
TOTAL-COMPILE-TIME                          总的编译时间

GARBAGE-COLLECTORS (垃圾收集器)参数说明

PS Scavenge                                垃圾收集器:清道夫
collectionCount                            技术
collectionTime                             收集时间
PS MarkSweep                               垃圾收集器:标记扫描

MEMORY-MANAGERS (内存管理器)参数说明

CodeCacheManager                            编码缓存管理器
Metaspace Manager                           元空间管理器

MEMORY (持久化工具)参数说明

HEAP-MEMORY-USAGE                            堆内存使用
NO-HEAP-MEMORY-USAGE                         无堆内存使用
PENDING-FINALIZE-COUNT                       待定计数

OPERATING-SYSTEM (操作系统)参数说明

OS                                          操作系统类型
ARCH                                        发行版本
PROCESSORS-COUNT                            处理器总数
LOAD-AVERAGE                                负荷平均
LOAD-AVERAGE                                版本

THREAD (线程)参数说明

COUNT                                       线程总数
DAEMON-COUNT                                守护进程总数
PEAK-COUNT                                  线程最高总数
STARTED-COUNT                               计数线程(从开始到现在一共)
DEADLOCK-COUNT                              死锁计数

FILE-DESCRIPTOR (文件描述符)参数说明

MAX-FILE-DESCRIPTOR-COUNT                   JVM进程最大可以打开的文件描述符数
OPEN-FILE-DESCRIPTOR-COUNT                  JVM当前打开的文件描述符数

4. 查看jvm的系统属性

命令描述
sysprop查看jvm的全部系统属性
sysprop ${key}查看单个系统属性
Sysprop key{key} {value}修改单个系统属性

5. 查看jvm的环境属性

命令描述
sysenv查看jvm的全部环境属性
sysenv ${key}查看某一个jvm环境属性

6. 查看、更新VM(虚拟机)诊断参数

命令描述
vmoption查看vm参数
vmoption ${key}查看单个vm参数
vmoption key{key} {value}更新单个vm参数

7. 查看jvm 的Perf Counter(性能计数器)

命令描述
perfcounter查看全部
perfcounter -d查看详细信息

注意:jdk9以上需要在应用启动后加下面参数

--add-opens java.base/jdk.internal.perf=ALL-UNNAMED --add-exports 
java.base/jdk.internal.perf=ALL-UNNAMED

8. 查看mbean信息(javabean)

命令描述
mbean查看全部mbean的名称
mbean -m ${名称}查看mbean的元信息
mbean ${名称}查看mbean属性信息(支持通配符*匹配)
mbean -i 1000 ${名称}实时监控某一个mbean
mbean -E ${名称}这个为正则表达式 可匹配名称里面的元素 元素用分割
示例:
mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount

9. 查看类的静态属性

命令描述
getstatic <类名> <静态字段名称>直接查看类中的静态属性

10. 查看静态属性(进阶)

命令描述
ognl '@类路径.类名称@静态名称'直接查看类中的静态属性
ognl详细用法官方地址:https://commons.apache.org/proper/commons-ognl/language-guide.html

11. 查看jvm已加载的类信息

命令描述
sc -d <类的包路径.类名称>直接查看类中的静态属性
sc -d -f <类的包路径.类名称>查看当前类的成员变量
sc -E <类的包路径.类名称>使用通配符进行匹配

12. 查看已加载类的方法信息

命令描述
sm 类的包路径.类名称展示每个方法的详细信息
sm -d <类的包路径.类名称 方法名>展示某一个方法的详细信息

13. 查看类路径

命令描述
dump 类的包路径.类名称展示类的详细路径
dump -d 目标目录 类的包路径.类名称将这个文件转存到目标目录
dump 类的包路径.*展示这个包下的全部文件地址

14. 堆转储

命令描述
heapdump 保存路径堆转储到指定文件
heapdump --live 保存路径只转储生存堆到指定文件
heapdump转储到临时文件

15. 查询内存对象,强制GC等功能

(https://img-blog.csdnimg.cn/5cd11065d40049749a57ca2f9f0b8538.png) 在这里插入图片描述

16. 查看类加载器的继承树,urls,类加载信息

在这里插入图片描述 在这里插入图片描述

17. 重发某个class文件

在这里插入图片描述

注意:如果要消除重发,需要删除这个类对应的重发记录,再重新发一下

18. 查看当前方法被调用的调用路径

命令描述
stack <类的包路径.类名称 方法名 >查看类的调用路径
stack <类的包路径.类名称 方法名 > 'params[0]<0' -n 2限制查看类的调用次数(推荐使用)
stack <类的包路径.类名称 方法名 > '#cost>5'使用执行时间来过滤

19. 对方法进行实时检测

命令描述
tt -t <类的包路径.类名称 方法名 >查看类的调用路径,可以在后面加 -n 3 来限制操作次数
tt -i 查看某一次的调用信息
tt -i -p重做某一次调用

20. 生成火焰图(略)

21. 基础命令

命令描述
cat 路径文件名打印文件内容
echo 'hello'打印参数
base64 /tmp/test.txt将文件进行base64编码
base64 -d /tmp/result.txt将base64文件解码
base64 -d /tmp/result.txt --output /tmp/bbb.txt使用base64解码并保存到目标文件中

常用命令

1. 查看系统实时数据面板

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

2. 查看当前线程相关命令

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

3. 方法执行监控

在这里插入图片描述

在这里插入图片描述

4. 函数(方法)执行数据观测

在这里插入图片描述 在这里插入图片描述

5. 查看方法每个路径耗时

在这里插入图片描述 在这里插入图片描述

6. 反编译源码

在这里插入图片描述 在这里插入图片描述

7. 查看logger信息(未补充完整)

在这里插入图片描述 在这里插入图片描述

8. 编译器

在这里插入图片描述