Arthas 之使用 profiler 做复杂链路分析

Arthas 的 profiler 命令

命令说明

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

文档:https://arthas.aliyun.com/doc/profiler.html

profiler 命令的实现依赖于开源 async-profiler

GitHub:https://github.com/jvm-profiling-tools/async-profiler

参数说明

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

注意事项

profiler 命令的使用,有以下注意事项:

  1. Windows 系统不支持 profiler 命令,只有 Linux/Mac 支持。

    Current OS do not support AsyncProfiler, Only support Linux/Mac.

  2. $ /lib/x86_64-linux-gnu/libc.so.6 --version 版本大于 2.14

    /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found

使用 profiler 命令

启动 profiler

$ profiler start
Started [cpu] profiling

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

获取数量

获取已采集的 sample 的数量

$ profiler getSamples
23

查看状态

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

可以查看当前 profiler 在采样哪种 event 和采样时间。

停止 profiler

默认生成 svg 格式结果

$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK

默认情况下,生成的结果保存到应用的工作目录下的 arthas-output 目录。可以通过 --file 参数来指定输出结果路径。比如:

$ profiler stop --file /tmp/output.svg
profiler output file: /tmp/output.svg
OK

生成 html 格式

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

$ profiler stop --format html
profiler output file: /tmp/test/arthas-output/20191125-143329.html
OK

或者在 --file 参数里用文件名指名格式。比如 --file /tmp/result.html

做复杂链路分析

采样生成 jfr 文件

启动 arthas 之后,执行以下采样命令:

profiler start -f /home/admin/yourAppName/target/arthas-output/%t.jfr -d 180

% t 表示当前时间,-d 后面是采样秒数。