阿里巴巴 Arthas 3.1.5版本支持火焰图,快速定位应用热点
Arthas是Alibaba開源的Java診斷工具,深受開發者喜愛。
Github:https://github.com/alibaba/arthas
文檔:https://alibaba.github.io/arthas
Arthas 3.1.5版本帶來下面全新的特性:
開箱即用的Profiler/火焰圖功能
grep命令支持更豐富的選項
monitor/tt/trace等命令提供更精確的時間統計
telnet/http協議共用3658端口
Profiler/Frame Graph/火焰圖
火焰圖的威名相信大家都有所耳聞,但可能因為使用比較復雜,所以望而止步。
在新版本的Arthas里集成了async-profiler,使用profiler命令就可以很方便地生成火焰圖,并且可以在瀏覽器里直接查看。
profiler命令wiki: https://alibaba.github.io/arthas/profiler.html
profiler 命令基本運行結構是:
? profiler action [actionArg]
下面介紹如何使用。
啟動profiler
$ profiler startStarted [cpu] profiling
默認情況下,生成的是cpu的火焰圖,即event為cpu。可以用--event參數來指定。
獲取已采集的sample的數量
$ profiler getSamples23
查看profiler狀態
$ profiler status[cpu] profiling is running for 4 seconds
可以查看當前profiler在采樣哪種event和采樣時間。
生成svg格式結果
$ profiler stopprofiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK
默認情況下,生成的結果保存到應用的工作目錄下的arthas-output目錄里。
通過瀏覽器查看arthas-output下面的profiler結果
默認情況下,arthas使用3658端口,則可以打開:http://localhost:3658/arthas-output/ 查看到arthas-output目錄下面的profiler結果:
點擊可以查看具體的結果:
如果是chrome瀏覽器,可能需要多次刷新。
grep命令支持更豐富的選項
標準的linux grep命令支持豐富的選項,可以很方便地定位結果的上下文等。
新版本的grep命令支持更多標準的選項,下面是一些例子:
sysprop | grep javasysprop | grep java -n
sysenv | grep -v JAVA
sysenv | grep -e "(?i)(JAVA|sun)" -m 3 -C 2
sysenv | grep JAVA -A2 -B3
thread | grep -m 10 -e "TIMED_WAITING|WAITING"
感謝社區里 @qxo 的貢獻。
telnet/http協議共用3658端口
默認情況下,Arthas的Telnet端口是3658,HTTP端口是8563,這個常常讓用戶迷惑。在新版本里,在3658端口同時支持Telnet/HTTP協議。
在瀏覽器里訪問 http://localhost:3658/ 也可以訪問到Web Console了。
在后續的版本里,考慮默認只偵聽 3658端口,減少用戶的配置項。
monitor/tt/trace等命令提供更精確的時間統計
以前Arthas被詬病比較多的一個問題是,monitor/tt/trace等命令時間統計誤差大。因為以前只使用了一個int來保存時間,所以不精確。
在新版本里,改用一個高效的stack來保存數據,時間的準確度大大提升,歡迎大家反饋效果。
感謝社區里 @huangjIT 的貢獻。
總結
總之,3.1.5版本的Arthas引入了開箱即用的Profiler/火焰圖功能,歡迎大家使用反饋。
Release Note: https://github.com/alibaba/arthas/releases/tag/arthas-all-3.1.5
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的阿里巴巴 Arthas 3.1.5版本支持火焰图,快速定位应用热点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫话:如何给女朋友解释什么是3PC?
- 下一篇: NYOJ 358 取石子(五)