首頁 > 軟體

arthas jprofiler做複雜鏈路的呼叫分析

2022-06-08 14:00:17

背景

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://arthas.aliyun.com/doc/profiler.html

https://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,即可看到這個方法被哪些上游呼叫到,呼叫量和佔比

總結

  • 通過Arthas profiler命令生成jfr檔案;
  • 在本地通過jprofiler來分析jfr檔案,定位誰在呼叫我;
  • 運用之妙,存乎一心。工具的互相結合,可以產生奇妙的化學反應。

以上就是arthas jprofiler做複雜鏈路的呼叫分析的詳細內容,更多關於arthas jprofiler複雜鏈路呼叫的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com