Arthas
是Alibaba开源的Java诊断工具,深受开发者喜爱。
Arthas 3.1.2版本持续增加新特性,下面重点介绍:
logger/heapdump/vmoption/stop
命令- 通过tunnel server连接不同网络的arthas,方便统一管控
- 易用性持续提升:提示符修改为
arthas@pid
形式,支持ctrl + k
清屏快捷键
logger/heapdump/vmoption/stop命令
logger命令
查看logger信息,更新logger level
查看所有logger信息
以下面的logback.xml
为例:
1 |
|
使用logger
命令打印的结果是:
1 | [arthas@2062]$ logger |
从appenders
的信息里,可以看到
CONSOLE
logger的target是System.out
APPLICATION
logger是RollingFileAppender
,它的file是app.log
ASYNC
它的appenderRef
是APPLICATION
,即异步输出到文件里
查看指定名字的logger信息
1 | [arthas@2062]$ logger -n org.springframework.web |
更新logger level
1 | [arthas@2062]$ logger --name ROOT --level debug |
heapdump命令
dump java heap, 类似jmap命令的heap dump功能。
dump到指定文件
1 | [arthas@58205]$ heapdump /tmp/dump.hprof |
只dump live对象
1 | [arthas@58205]$ heapdump --live /tmp/dump.hprof |
vmoption命令
查看,更新VM诊断相关的参数
查看所有的option
1 | [arthas@56963]$ vmoption |
查看指定的option
1 | [arthas@56963]$ vmoption PrintGCDetails |
更新指定的option
1 | [arthas@56963]$ vmoption PrintGCDetails true |
stop命令
之前有用户吐槽,不小心退出Arthas console之后,shutdown
会关闭系统,因此增加了stop
命令来退出arthas,功能和shutdown
命令一致。
通过tunnel server连接不同网络的arthas
在新版本里,增加了arthas tunnel server的功能,用户可以通过tunnel server很方便连接不同网络里的arthas agent,适合做统一管控。
启动arthas时连接到tunnel server
在启动arthas,可以传递--tunnel-server
参数,比如:
1 | as.sh --tunnel-server 'ws://47.75.156.201:7777/ws' |
目前
47.75.156.201
是一个测试服务器,用户可以自己搭建arthas tunnel server
- 如果有特殊需求,可以通过
--agent-id
参数里指定agentId。默认情况下,会生成随机ID。
attach成功之后,会打印出agentId,比如:
1 | ,---. ,------. ,--------.,--. ,--. ,---. ,---. |
如果是启动时没有连接到 tunnel server,也可以在后续自动重连成功之后,通过 session命令来获取 agentId:
1 | [arthas@86183]$ session |
以上面的为例,在浏览器里访问 http://47.75.156.201:8080/ ,输入 agentId
,就可以连接到本机上的arthas了。
Arthas tunnel server的工作原理
1 | browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent |
https://github.com/alibaba/arthas/blob/master/tunnel-server/README.md
易用性持续提升
提示符修改为
arthas@pid
形式,用户可以确定当前进程ID,避免多个进程时误操作1
[arthas@86183]$ help
增加
ctrl + k
清屏快捷键
总结
总之,3.1.2
版本的Arthas新增加了logger/heapdump/vmoption/stop
命令,增加了tunnel server,方便统一管控。另外还有一些bug修复等,可以参考
- Release Note: https://github.com/alibaba/arthas/releases/tag/3.1.2
最后,Arthas的在线教程考虑重新组织,欢迎大家参与,提出建议: