Alibaba Arthas 3.1.5版本支持火焰圖,快速定位應用熱點

Arthas

Arthas是Alibaba開源的Java診斷工具,深受開發者喜好。html

Arthas 3.1.5版本帶來下面全新的特性:java

  • 開箱即用的Profiler/火焰圖功能
  • grep命令支持更豐富的選項
  • monitor/tt/trace等命令提供更精確的時間統計
  • telnet/http協議共用3658端口

Profiler/Frame Graph/火焰圖

火焰圖的威名相信你們都有所耳聞,但可能由於使用比較複雜,因此望而止步。linux

在新版本的Arthas裏集成了async-profiler,使用profiler命令就能夠很方便地生成火焰圖,而且能夠在瀏覽器裏直接查看。git

profiler 命令基本運行結構是 profiler action [actionArg]。下面介紹如何使用。github

啓動profiler

$ profiler start
Started [cpu] profiling
複製代碼

默認狀況下,生成的是cpu的火焰圖,即event爲cpu。能夠用--event參數來指定。chrome

獲取已採集的sample的數量

$ profiler getSamples
23
複製代碼

查看profiler狀態

$ profiler status
[cpu] profiling is running for 4 seconds
複製代碼

能夠查看當前profiler在採樣哪一種event和採樣時間。瀏覽器

生成svg格式結果

$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK
複製代碼

默認狀況下,生成的結果保存到應用的工做目錄下的arthas-output目錄裏。bash

經過瀏覽器查看arthas-output下面的profiler結果

默認狀況下,arthas使用3658端口,則能夠打開: http://localhost:3658/arthas-output/ 查看到arthas-output目錄下面的profiler結果:jvm

點擊能夠查看具體的結果:async

若是是chrome瀏覽器,可能須要屢次刷新。

grep命令支持更豐富的選項

標準的linux grep命令支持豐富的選項,能夠很方便地定位結果的上下文等。

新版本的grep命令支持更多標準的選項,下面是一些例子:

sysprop | grep java
sysprop | 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/火焰圖功能,歡迎你們使用反饋。

最後,Arthas 正在參加2019年度最受歡迎開源中國軟件評選,急需你們寶貴的一票支持!!查看

投票後能夠到 issue 裏抽獎兩本圖書,github.com/alibaba/art…

  • 《 OpenShift 在企業中的實踐-PasS DevOps 微服務》
  • 《協同-數字化時代組織效率的本質》
相關文章
相關標籤/搜索