是谁在调用我?使用 arthas+jprofiler 做复杂链路分析
作者 | 羽涅 阿里巴巴 CCO 技術(shù)部技術(shù)專家,承擔(dān) CCO 技術(shù)部架構(gòu)治理、基礎(chǔ)技術(shù)能力建設(shè)方面工作,熱衷開源技術(shù),喜歡折騰電子產(chǎn)品。
【Arthas 官方社區(qū)正在舉行征文活動(dòng),參加即有獎(jiǎng)品拿~點(diǎn)擊投稿】
背景
Arthas 是阿里巴巴開源的應(yīng)用診斷利器,提供了 profiler 命令,可以生成熱點(diǎn)火焰圖。通過采樣錄制調(diào)用鏈路來做性能分析,極大提升了線上排查性能問題的效率。
但是有一個(gè)問題,當(dāng) async-profiler 全量采樣導(dǎo)出的 svg 文件太大時(shí),想要找到關(guān)鍵的調(diào)用點(diǎn),就非常困難。
比如下圖:
沒有辦法做聚合或過濾,這方面本地的 profiler 工具比如 jprofiler、yourkits 就方便很多,有沒有辦法將兩者結(jié)合起來呢?
經(jīng)過分析發(fā)現(xiàn),async-profiler 支持 jfr (Java Flight Recorder) 格式輸出,jprofiler 也支持打開 jfr 快照,成了!具體操作步驟如下:
1. arthas 采樣生成 jfr 文件
啟動(dòng) arthas 之后,執(zhí)行以下采樣命令:
profiler start -f /home/admin/yourAppName/target/arthas-output/%t.jfr -d 180%t 表示當(dāng)前時(shí)間,-d 后面是采樣秒數(shù),更多參數(shù)參見: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 分析
在做性能分析時(shí)我們常常想要找出:是誰在調(diào)用我,是誰調(diào)用我最多。下面舉例介紹怎么做的。
3.1 打開快照
使用 jprofiler 打開 jfr 文件,選擇 Open a snapshot, 打開之后選擇 CPU views:
3.2 反向分析
View -> Find 查找要分析的類和方法,然后選擇 Analyze -> Calculate Backtraces to Selected Method:
3.3 分析結(jié)果
修改 Summation mode 為 Total times,即可看到這個(gè)方法被哪些上游調(diào)用到,調(diào)用量和占比。
總結(jié)
Arthas 征文活動(dòng)火熱進(jìn)行中
Arthas 官方正在舉行征文活動(dòng),如果你有:
- 使用 Arthas 排查過的問題
- 對 Arthas 進(jìn)行源碼解讀
- 對 Arthas 提出建議
- 不限,其它與 Arthas 有關(guān)的內(nèi)容
歡迎參加征文活動(dòng),還有獎(jiǎng)品拿哦~點(diǎn)擊投稿
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的公眾號。”
總結(jié)
以上是生活随笔為你收集整理的是谁在调用我?使用 arthas+jprofiler 做复杂链路分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arthas 初探--安装初步适用
- 下一篇: Java 虚拟机诊断利器