Arthas
是Alibaba開源的Java診斷工具,深受開發者喜好。html
Arthas 3.1.5版本帶來下面全新的特性:java
火焰圖的威名相信你們都有所耳聞,但可能由於使用比較複雜,因此望而止步。linux
在新版本的Arthas裏集成了async-profiler,使用profiler
命令就能夠很方便地生成火焰圖,而且能夠在瀏覽器裏直接查看。git
profiler
命令基本運行結構是 profiler action [actionArg]
。下面介紹如何使用。github
$ profiler start
Started [cpu] profiling
複製代碼
默認狀況下,生成的是cpu的火焰圖,即event爲
cpu
。能夠用--event
參數來指定。chrome
$ profiler getSamples
23
複製代碼
$ profiler status
[cpu] profiling is running for 4 seconds
複製代碼
能夠查看當前profiler在採樣哪一種event
和採樣時間。瀏覽器
$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK
複製代碼
默認狀況下,生成的結果保存到應用的工做目錄
下的arthas-output
目錄裏。bash
默認狀況下,arthas使用3658端口,則能夠打開: http://localhost:3658/arthas-output/ 查看到arthas-output
目錄下面的profiler結果:jvm
點擊能夠查看具體的結果:async
若是是chrome瀏覽器,可能須要屢次刷新。
標準的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 的貢獻。
默認狀況下,Arthas的Telnet端口是3658,HTTP端口是8563,這個經常讓用戶迷惑。在新版本里,在3658端口同時支持Telnet/HTTP協議。
在瀏覽器裏訪問 http://localhost:3658/ 也能夠訪問到Web Console了。
在後續的版本里,考慮默認只偵聽 3658端口,減小用戶的配置項。
之前Arthas被詬病比較多的一個問題是,monitor/tt/trace等命令時間統計偏差大。由於之前只使用了一個int來保存時間,因此不精確。
在新版本里,改用一個高效的stack來保存數據,時間的準確度大大提高,歡迎你們反饋效果。
感謝社區裏 @huangjIT 的貢獻。
總之,3.1.5
版本的Arthas引入了開箱即用的Profiler/火焰圖功能,歡迎你們使用反饋。
最後,Arthas 正在參加2019年度最受歡迎開源中國軟件評選,急需你們寶貴的一票支持!!查看
投票後能夠到 issue 裏抽獎兩本圖書,github.com/alibaba/art… :