做者 | 羽涅 阿里巴巴 CCO 技術部技術專家,承擔 CCO 技術部架構治理、基礎技術能力建設方面工做,熱衷開源技術,喜歡折騰電子產品。html
【Arthas 官方社區正在舉行徵文活動,參加即有獎品拿~點擊投稿】git
Arthas 是阿里巴巴開源的應用診斷利器,提供了 profiler 命令,能夠生成熱點火焰圖。經過採樣錄製調用鏈路來作性能分析,極大提高了線上排查性能問題的效率。github
可是有一個問題,當 async-profiler 全量採樣導出的 svg 文件太大時,想要找到關鍵的調用點,就很是困難。架構
好比下圖:less
沒有辦法作聚合或過濾,這方面本地的 profiler 工具好比 jprofiler、yourkits 就方便不少,有沒有辦法將二者結合起來呢?jvm
通過分析發現,async-profiler 支持 jfr (Java Flight Recorder) 格式輸出,jprofiler 也支持打開 jfr 快照,成了!具體操做步驟以下:async
啓動 arthas 以後,執行如下采樣命令:ide
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.cppsvg
能夠用 oss 倒騰,或者 szrz 等其餘途徑倒騰到本地。微服務
在作性能分析時咱們經常想要找出:是誰在調用我,是誰調用我最多。下面舉例介紹怎麼作的。
使用 jprofiler 打開 jfr 文件,選擇 Open a snapshot, 打開以後選擇 CPU views:
View -> Find 查找要分析的類和方法,而後選擇 Analyze -> Calculate Backtraces to Selected Method:
修改 Summation mode 爲 Total times,便可看到這個方法被哪些上游調用到,調用量和佔比。
jfr
文件;jprofiler
來分析jfr
文件,定位誰在調用我;Arthas 官方正在舉行徵文活動,若是你有:
不限,其它與 Arthas 有關的內容
歡迎參加徵文活動,還有獎品拿哦~點擊投稿
「阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的公衆號。」