Arthas 是淘宝出的一款Java性能分析工具。
Arhtas tunnel 是一个web服务,主要作用就是集中式连接Arthas的客户端。

安装

下载地址

https://github.com/alibaba/arthas/releases
image.png
下载 arthas-tunnel-server-3.5.3-fatjar.jar 到服务器

启动

  1. nohup java -jar arthas-tunnel-server.jar &
  2. tail -200f nohup.log

启动日志如下:
image.png

arthas tunnel 是一个服务,他需要两个端口,默认 80807777
8080 端口是web访问端口。
7777 是websocket通信端口。

访问

http://192.168.0.251:8080,如下图:
image.png

连接客户端

当连接客户端的时候,需要输入 AgentId
当客户端服务启动的时候,会连接Arthas Tunnel服务端,在日志里面会有打印客户端Id如下:
image.png
也就是说,我们的AgentId是 serverName-Port ,如:kxt-seats-service 服务,端口是8083,那么AgentId 就是 kxt-seats-service-8083
这个规则在客户端程序可以配置。
确定了AgentId,接下来试试连接客户端,如下:
image.png
输入了AgentId,点击Connect 出现以下界面,表示连接成功。

程序修改

依赖

<dependency>
  <groupId>com.taobao.arthas</groupId>
  <artifactId>arthas-spring-boot-starter</artifactId>
  <version>3.5.3</version>
</dependency>

配置

arthas:
  http-port: 0
  telnet-port: 0
  tunnel-server: ws://121.37.158.191:7777/ws
  # tunnel-server: ws://192.168.0.151:7777/ws
  agent-id: ${spring.application.name}-${server.port}
  • 如果配置 arthas.telnetPort为 -1 ,则不listen telnet端口。arthas.httpPort类似。
  • 如果配置 arthas.telnetPort为 0 ,则随机telnet端口。arthas.httpPort类似。
  • arthas.tunnel-server 是websocket连接地址,将服务自身注册到 arthas tunnel server 上。
  • agent-id 是服务的id,用户从可视化界面连接arthas客户端,进行法分析。

注意:请把这个文件配置到nacos中,文件名是: arthas.yaml ,如下图:
image.png
image.png

内存监控

dashboard

image.png

image.png

Dump日志生成

heapdump /var/log/system-service090401.hprof

image.png
导出成功后,在服务器日志目录就会有这个文件。