借助arthas工具打火焰图

小丫2年前技术文章4031

1、下载arthas

在命令行下面执行(使用和目标进程一致的用户启动,否则可能 attach 失败):

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
  • 执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行:sudo su admin && java -jar arthas-boot.jarsudo -u admin -EH java -jar arthas-boot.jar

  • 如果 attach 不上目标进程,可以查看~/logs/arthas/ 目录下的日志。

  • 如果下载速度比较慢,可以使用 aliyun 的镜像:java -jar arthas-boot.jar --repo-mirror aliyun --use-http

  • java -jar arthas-boot.jar -h 打印更多参数信息。

2、选择应用 java 进程

$ $ java -jar arthas-boot.jar
* [1]: 35542
  [2]: 71560 math-game.jar

3、借助profiler 打火焰图

profiler 命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图。

profiler 命令基本运行结构是 profiler action [actionArg]

参数说明

参数名称参数说明
action要执行的操作
actionArg属性名模式
[i:]采样间隔(单位:ns)(默认值:10'000'000,即 10 ms)
[f:]将输出转储到指定路径
[d:]运行评测指定秒
[e:]要跟踪哪个事件(cpu, alloc, lock, cache-misses 等),默认是 cpu

3.1 启动profile

$ profiler start
Started [cpu] profiling

提示

默认情况下,生成的是 cpu 的火焰图,即 event 为cpu。可以用--event参数来指定。

3.2 获取已采集的 sample 的数量

$ profiler getSamples
23

3.3 查看 profiler 状态

$ profiler status
[cpu] profiling is running for 4 seconds

3.4停止 profiler

生成 html 格式结果 默认情况下,结果文件是html格式,也可以用--format参数指定:

$ profiler stop --format html
profiler output file: /tmp/test/arthas-output/20211207-111550.html
OK

3.5 通过浏览器查看  profiler 结果

默认情况下,arthas 使用 3658 端口,则可以打开: http://localhost:3658/arthas-output/在新窗口打开 查看到arthas-output目录下面的 profiler 结果:

image.png

点击可以查看具体的结果:

image.png

通常情况下我们的目标服务器和本地电脑网络不通,可以将结果文件下载到本地电脑,然后用浏览器打开查看。

4、profiler 支持的 events

在不同的平台,不同的 OS 下面,支持的 events 各有不同。比如,在 linux 下面:

$ profiler list
Basic events:
  cpu
  alloc
  lock
  wall
  itimer
Perf events:
  page-faults
  context-switches
  cycles
  instructions
  cache-references
  cache-misses
  branches
  branch-misses
  bus-cycles
  L1-dcache-load-misses
  LLC-load-misses
  dTLB-load-misses
  mem:breakpoint
  trace:tracepoint


相关文章

trino容器对接ldap(二)

trino容器对接ldap(二)

前提:本文前提是在trino容器已经对接上hive组件,并且ldap已经部署完成的基础上进行的对接。前提文章见:helm安装部署trino对接hive(一)安装部署1、设置证书因为不确定是在哪台机器中...

MySQL运维实战之备份和恢复(8.1)xtrabackup全量备份

xtrabackup是percona开源的mysql物理备份工具。xtrabackup 8.0支持mysql 8.0版本的备份和恢复。xtrabackup 2.4支持mysql 5.7及以下版本的备份...

trino组件对接hudi(四)

trino组件对接hudi(四)

安装部署本文是基于已经部署了trino组件的环境上,进行的trino和hudi的对接,使trino组件能够正常查询hudi表。1、增加hudi connector配置在trino安装部署下的etc/c...

磁盘扩容

磁盘扩容

磁盘扩容 一、linux系统1、需求由于系统盘/数据盘打满,需要扩容至100G,首先在控制台后台进行磁盘扩容。注:只能扩容磁盘的最后一个分区2、查看扩容后的磁盘空间fdisk -l3、查看磁盘分区ls...

hadoop集群集成Iceberg操作指导

hadoop集群集成Iceberg操作指导

hadoop集群集成Iceberg操作指导书一、    准备工作1.       大数据集群运行正常,完成hi...

MySQL运维实战之备份和恢复(8.4)xtrabackup恢复全量备份

恢复全量备份恢复全量备份大致可以分成以下几步:解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。解压文件如果备份时使用了xbstream,需要先解压备份文件。我们...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。