借助arthas工具打火焰图

小丫2年前技术文章2890

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


相关文章

FLink-Canal

canal formatCanal 是一个 CDC(ChangeLog Data Capture,变更日志数据捕获)工具,可以实时地将 MySQL 变更传输到其他系统。Canal 为变更日志提供了统一...

Kafak顺序写入与数据读取详解

Kafak顺序写入与数据读取详解

生产者(producer)是负责向Kafka提交数据的,Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafak采用了两个技术,顺序写入和MMFile。1. 顺序写入因为...

Flink关于HiveCatalog

HiveCatalogHiveCatalog 有两个用途:作为原生 Flink 元数据的持久化存储,以及作为读写现有 Hive 元数据的接口。配置在flink-sql-connector-hive-1...

大数据集群部署规划(二)硬件配置要求

CPU(虚拟机建议配置*2)X86服务器:最低配置:双路4核Intel处理器。推荐配置:双路8核Intel处理器。ARM服务器:双路32核ARM处理器Bit-mode64位内存(虚拟机不建议超分)物理...

ES运维(三)架构与规划(阿里云)

ES运维(三)架构与规划(阿里云)

1、 阿里云Elasticsearch架构图阿⾥云Elasticsearch和Kibana容器化运⾏在ECS中,监控agent(独⽴进程)负责收集监控指标,通过SLS发送给云监控完成监控报警。实例之间...

spark指标性能分析

spark指标性能分析

1)      Spark的性能指标   任务启动后可以在yarn的原生页面看到对应的任务信息,点击ApplicationMast...

发表评论    

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