Arthas CPU 火焰图技术 简谈

发布时间:2024年01月10日

1.基础命令

  1. help
    作用
    查看命令帮助信息,可以查看当前 arthas 版本支持的指令,或者查看具体指令的使用说明。
  2. cat
    作用
    打印文件内容,和linux里的cat命令类似,如果没有写路径,则展示当前目录下的文件
    使用参考
cat /tmp/a.txt
  1. grep
    作用
    类似传统的grep命令。但是只能用于管道命令
    请添加图片描述
    示例
thread | grep -m 10 -e  "TIMED_WAITING|WAITING"
  1. pwd
    作用
    返回当前的工作目录,和 linux 命令类似
  2. cls
    作用
    清空当前屏幕区域。
  3. session
    作用
    查看当前会话的信息,显示当前绑定的 pid 以及会话 id。
  4. version
    作用
    输出当前目标 Java 进程所加载的 Arthas 版本号
  5. quit
    作用
    退出当前 Arthas 客户端,其他 Arthas 客户端不受影响。等同于exit、logout、q三个指令。
  6. stop
    作用
    关闭 Arthas 服务端,所有 Arthas 客户端全部退出。
  7. keymap
    作用
    输出当前的快捷键映射表
    2.jvm相关命令
  8. dashboard
    作用
    显示当前系统的实时数据面板,包含CPU、内存的运行信息
    请添加图片描述
    请添加图片描述

示例
在这里插入图片描述

  1. thread
    作用
    查看当前JVM中线程的使用的堆栈信息
    参数说明
    请添加图片描述
    示例
    在这里插入图片描述在这里插入图片描述
  2. jvm
    作用
    JVM相关信息,启动参数
THREAD 相关
COUNT: JVM 当前活跃的线程数
DAEMON-COUNT: JVM 当前活跃的守护线程数
PEAK-COUNT: 从 JVM 启动开始曾经活着的最大线程数
STARTED-COUNT: 从 JVM 启动开始总共启动过的线程次数
DEADLOCK-COUNT: JVM 当前死锁的线程数

在这里插入图片描述

  1. 其他参考
    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占用情况。

文章来源:https://blog.csdn.net/ymqzll/article/details/135513695
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。