乐趣区

关于云原生-cloud-native:是谁在调用我使用-arthasjprofiler-做复杂链路分析

作者 | 羽涅 阿里巴巴 CCO 技术部技术专家,承当 CCO 技术部架构治理、根底技术能力建设方面工作,热衷开源技术,喜爱折腾电子产品。

【Arthas 官网社区正在举办征文活动,加入即有奖品拿~ 点击投稿】

背景

Arthas 是阿里巴巴开源的利用诊断利器,提供了 profiler 命令,能够生成热点火焰图。通过采样录制调用链路来做性能剖析,极大晋升了线上排查性能问题的效率。

然而有一个问题,当 async-profiler 全量采样导出的 svg 文件太大时,想要找到要害的调用点,就十分艰难。

比方下图:

没有方法做聚合或过滤,这方面本地的 profiler 工具比方 jprofiler、yourkits 就不便很多,有没有方法将两者联合起来呢?

通过剖析发现,async-profiler 反对 jfr (Java Flight Recorder) 格局输入,jprofiler 也反对关上 jfr 快照,成了!具体操作步骤如下:

1. arthas 采样生成 jfr 文件

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

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

%t 示意以后工夫,-d 前面是采样秒数,更多参数参见:https://alibaba.github.io/arthas/profiler.htmlhttps://github.com/jvm-profiling-tools/async-profiler/blob/v1.6/src/arguments.cpp

2. 下载 jfr 到本地

能够用 oss 倒腾,或者 szrz 等其余路径倒腾到本地。

3. jprofiler 剖析

在做性能剖析时咱们经常想要找出:是谁在调用我,是谁调用我最多。上面举例介绍怎么做的。

3.1 关上快照

应用 jprofiler 关上 jfr 文件,抉择 Open a snapshot, 关上之后抉择 CPU views:

3.2 反向剖析

View -> Find 查找要剖析的类和办法,而后抉择 Analyze -> Calculate Backtraces to Selected Method:

3.3 剖析后果

批改 Summation mode 为 Total times,即可看到这个办法被哪些上游调用到,调用量和占比。

总结

  1. 通过 Arthas profiler 命令生成 jfr 文件;
  2. 在本地通过 jprofiler 来剖析 jfr 文件,定位谁在调用我;
  3. 运用之妙,存乎一心。工具的相互联合,能够产生微妙的化学反应。

Arthas 征文活动炽热进行中

Arthas 官网正在举办征文活动,如果你有:

  • 应用 Arthas 排查过的问题
  • 对 Arthas 进行源码解读
  • 对 Arthas 提出倡议
  • 不限,其它与 Arthas 无关的内容

    欢送加入征文活动,还有奖品拿哦~ 点击投稿

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术畛域、聚焦云原生风行技术趋势、云原生大规模的落地实际,做最懂云原生开发者的公众号。”

退出移动版