arthas?jprofiler做復雜鏈路的調用分析
背景
Arthas是阿里巴巴開源的應用診斷利器,提供了profiler命令,可以生成熱點火焰圖。通過采樣錄制調用鏈路來做性能分析,極大提升了線上排查性能問題的效率。
但是有一個問題,當async-profiler全量采樣導出的svg文件太大時,想要找到關鍵的調用點,就非常困難。
比如下圖:
沒有辦法做聚合或過濾,這方面本地的profiler工具比如jprofiler、yourkits就方便很多,有沒有辦法將兩者結合起來呢?
經過分析發(fā)現,async-profiler支持jfr (Java Flight Recorder)格式輸出,jprofiler也支持打開jfr快照,成了!具體操作步驟如下:
1. arthas采樣生成jfr文件
啟動arthas之后,執(zhí)行以下采樣命令:
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復雜鏈路調用的資料請關注腳本之家其它相關文章!
相關文章
java日期時間格式化@JsonFormat與@DateTimeFormat的使用
本文主要介紹了java日期時間格式化@JsonFormat與@DateTimeFormat的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08spring boot中interceptor攔截器未生效的解決
這篇文章主要介紹了spring boot中interceptor攔截器未生效的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09