0%

Arthas之安装部署

Arthas是Alibaba开源的一款Java诊断工具

abstract.png

安装部署

只需从Github中下述地址直接下载、解压最新完整的二进制包即可

1
2
# Arthas Release 地址
https://github.com/alibaba/arthas/releases

figure 1.jpeg

与此同时,官方还提供了一个测试程序math-game.jar。其每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。下载后,直接通过java -jar命令启动即可

1
2
3
4
5
# 测试程序math-game.jar 下载
curl -O https://arthas.aliyun.com/math-game.jar

# 启动测试程序
java -jar math-game.jar

当测试程序math-game.jar启动后,我们可通过下述命令启动Arthas

1
2
# 启动Arthas
java -jar arthas-boot.jar

如下所示,这里math-game.jar进程是第1个,则输入1。然后按Enter回车即可。此时Arthas即会attach到目标进程。此时即可继续执行Arthas的其他相关命令了。

当执行 quit 或 exit 命令时,会退出Arthas终端界面。但attach到目标进程上的Arthas会继续在后台保持运行、端口会保持开放,这样下次再次启动启动Arthas可以直接连上;如果期望完全停止Arthas,可以执行stop命令

figure 2.jpeg

Web Console

Arthas还提供了一个Web Console,在其会attach到目标进程,可以直接访问Web页面地址 http://127.0.0.1:8563 进行查看,显然默认端口为8563

figure 3.jpeg

由于默认情况下,Arthas只监听127.0.0.1地址。如果想通过Web Console远程连接服务器的Arthas,则可以使用 —target-ip 参数指定需要监听的IP。同时可以使用 —http-port 选项指定Web Console的端口,如果未指定则默认为8563

我们先在服务器启动Arthas,并设置监听服务器IP。需要注意的是对于云服务器而言,还需要对http-port端口进行放行(TCP协议)

1
2
# 设置Arthas监听服务器自己的本机IP, 含公网IP
java -jar arthas-boot.jar --target-ip 0.0.0.0 --http-port 8563

效果如下所示,左侧终端显示的是服务器上运行的一个Java程序;右侧终端为在服务器上启动的Arthas,并监听了服务器的公网IP

figure 4.jpeg

在服务器上的Arthas成功attach后,我们只需通过地址 <服务器公网IP>: ,即可实现远程访问服务器Arthas的Web Console

figure 5.jpeg

dashboard命令

Arthas提供了丰富命令,这里我们以dashboard为例。其可以展示当前实时的数据面板,该命令支持下述选项

  • -i : 指定数据刷新的间隔,单位为ms。默认值为5000
  • -n : 指定数据刷新的次数。如果不指定,则会一直进行刷新。可通过ctrl + c组合键退出

figure 6.jpeg

命令效果如下所示。其中,线程信息中的ID指的是Java级别的线程ID,其不能跟jstack中的 nativeID一一对应;线程信息中的PRIORITY指的是线程优先级,值为1~10 之间的数字,越大表示优先级越高

figure 7.jpeg

请我喝杯咖啡捏~

欢迎关注我的微信公众号:青灯抽丝