Arthas
是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。
Arthas 3.1.5 版本带来下面全新的特性:
火焰图的威名相信大家都有所耳闻,但可能因为使用比较复杂,所以望而止步。
在新版本的 Arthas 里集成了async-profiler,使用profiler
命令就可以很方便地生成火焰图,并且可以在浏览器里直接查看。
profiler
命令基本运行结构是 profiler action [actionArg]
。下面介绍如何使用。
$ profiler start
Started [cpu] profiling
默认情况下,生成的是 cpu 的火焰图,即 event 为
cpu
。可以用--event
参数来指定。
$ 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
目录里。
默认情况下,arthas 使用 3658 端口,则可以打开: http://localhost:3658/arthas-output/ 查看到arthas-output
目录下面的 profiler 结果:
点击可以查看具体的结果:
如果是 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 里抽奖两本图书,https://github.com/alibaba/arthas/issues/951:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.