1.基础命令
- help
作用
查看命令帮助信息,可以查看当前 arthas 版本支持的指令,或者查看具体指令的使用说明。 - cat
作用
打印文件内容,和linux里的cat命令类似,如果没有写路径,则展示当前目录下的文件
使用参考
cat /tmp/a.txt
- grep
作用
类似传统的grep命令。但是只能用于管道命令
示例
thread | grep -m 10 -e "TIMED_WAITING|WAITING"
- pwd
作用
返回当前的工作目录,和 linux 命令类似 - cls
作用
清空当前屏幕区域。 - session
作用
查看当前会话的信息,显示当前绑定的 pid 以及会话 id。 - version
作用
输出当前目标 Java 进程所加载的 Arthas 版本号 - quit
作用
退出当前 Arthas 客户端,其他 Arthas 客户端不受影响。等同于exit、logout、q三个指令。 - stop
作用
关闭 Arthas 服务端,所有 Arthas 客户端全部退出。 - keymap
作用
输出当前的快捷键映射表
2.jvm相关命令 - dashboard
作用
显示当前系统的实时数据面板,包含CPU、内存的运行信息
示例
- thread
作用
查看当前JVM中线程的使用的堆栈信息
参数说明
示例
- jvm
作用
JVM相关信息,启动参数
THREAD 相关
COUNT: JVM 当前活跃的线程数
DAEMON-COUNT: JVM 当前活跃的守护线程数
PEAK-COUNT: 从 JVM 启动开始曾经活着的最大线程数
STARTED-COUNT: 从 JVM 启动开始总共启动过的线程次数
DEADLOCK-COUNT: JVM 当前死锁的线程数
- 其他参考
https://arthas.aliyun.com/doc/commands.html
3.火焰图分析
命令介绍
profiler start:开始搜集样本
profiler getSamples:搜集的样本数,时间越长搜集的样本数越多
profiler list:可搜集的event,默认为CPU
profiler status:搜集时间
profiler stop:搜集暂停,默认搜集为.svg图片文件,需要转换下文件格式和输出路径 (profiler stop --format html --file /service/app/logs/xxx.html )
示例
图形介绍
1.这里的x轴代表采样总量(也就是此刻所有执行的耗时cpu的方法)。
这是注意的是x 轴并不代表时间,而是所有的调用方法合并后,按字母顺序排列。
2.Y轴代表方法的调用栈深度,每一层都是一个方法。顶部是正在执行的方法。当然调用栈越深,火焰就越高。
3.鼠标可以点击的选中的每个框就代表了一个栈里的函数,其宽度可以直接理解为CPU时间占比(其实是采样的数量以及与采样总量的占比)。
那么,也就是说占比比较宽的框就表示:
a.该函数运行时间较长(单次时间长)
b.被调用次数较多.(调用频率高)
进而被采样的次数比较多,占用的CPU时间多。
4.另外火焰图:
绿色部分代表Java代码
黄色部分代表JVM C++代码
橙色部分代表内核态C语言代码
红色代表用户态C语言代码
由此可知,火焰图可以直观的帮我们分析CPU占用情况。