使用Arthas连接远程Java进程
Arthas可以通过几种方式连接远程Java进程进行诊断和分析:
1. 通过WebSocket连接远程进程
这是推荐的方式,需要在远程机器上启动Arthas,然后本地连接:
-
在远程机器上启动Arthas:
# 下载arthas curl -O https://arthas.aliyun.com/arthas-boot.jar # 启动并选择目标Java进程 java -jar arthas-boot.jar
-
在本地机器上连接:
# 使用telnet方式连接 telnet remote-ip 3658 # 或者使用arthas的http接口 curl http://remote-ip:8563/api
2. 使用SSH隧道连接
如果远程机器不能直接访问,可以通过SSH隧道:
ssh -L 3658:localhost:3658 user@remote-ip
然后在本地使用:
telnet localhost 3658
3. 直接远程attach
如果网络允许,可以直接远程attach:
java -jar arthas-boot.jar --target-ip remote-ip --telnet-port 3658 --http-port 8563
4. 通过Arthas Tunnel Server连接
对于大规模环境,可以使用Tunnel Server:
-
启动Tunnel Server:
java -jar arthas-tunnel-server.jar
-
客户端连接时指定Tunnel Server:
java -jar arthas-boot.jar --tunnel-server 'ws://tunnel-server-ip:7777/ws'
注意事项
- 确保远程机器的防火墙开放了相关端口(默认3658/telnet和8563/http)
- 生产环境建议使用SSH隧道或Tunnel Server方式,更安全
- 连接前确保远程Java进程有足够权限被attach
连接成功后,就可以像操作本地Java进程一样使用Arthas的各种诊断命令了。