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
命令的使用,有以下注意事项:
Windows 系统不支持 profiler 命令,只有 Linux/Mac 支持。
Current OS do not support AsyncProfiler, Only support Linux/Mac.
$ /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 后面是采样秒数。