启动 Arthas

# 启动 Arthas

# 交互模式启动

./as.sh
1
➜  bin git:(develop) ✗ ./as.sh
Found existing java process, please choose one and input the serial number of the process, eg: 1 . Then hit ENTER.
  [1]: 3088 org.jetbrains.idea.maven.server.RemoteMavenServer
* [2]: 12872 org.apache.catalina.startup.Bootstrap
  [3]: 2455
Attaching to 12872...
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
$
1
2
3
4
5
6
7
8
9
10
11
12

# 非交互模式启动

启动脚本如下:

./as.sh <PID>[@IP:PORT]
1

# 参数说明

  • PID:目标 Java 进程 ID(请确保执行当前执行命令的用户必须有足够的权限操作对应的 Java 进程)
  • IP:Arthas Server 侦听的地址,默认值是 127.00.1。Arthas 允许多个用户同时访问,并且各自的命令不会相互干扰执行
  • PORT:目标服务器 Arthas Server 的端口号,默认的端口号是 3658

# 示例

  • 如果不指定 IP 和 PORT,默认是 127.0.0.1 和 3658

    ./as.sh 12345

    上述命令等价于:

    ./as.sh 12356@127.0.0.1:3658

# 远程诊断

服务器启动 Arthas Server 后,其他人可以使用 telnet 远程连接上去进程诊断,例如:

telnet 192.168.1.119 3658
1

# sudo 支持

成熟的线上管理环境一般都不会直接开放 JVM 部署用户权限给你,而是通过 sudo-list 来控制和监控用户的越权操作。由于 as.sh 脚本中会对当前用户的环境变量产生感知,所以需要加上 -H 参数

sudo -u admin -H ./as.sh 12345
1

# Windows 环境支持

目前as.bat脚本只支持一个参数:pid

as.bat <pid>
1