arthas官网:https://arthas.aliyun.com/doc/quick-start.html#math-game
1、进入到服务部署的机器环境中
这里直接使用的xshell进行的连接
2、下载
进入到服务挂载目录
[root@localhost java]# /home/campus/t3/java/
[root@localhost java]# ls
下载arthas程序包
[root@localhost java]# curl -O https://arthas.aliyun.com/arthas-boot.jar
3、启动
查看想要操作的容器id
[root@localhost java]# docker ps
```java
[root@localhost java]# docker ps|grep 服务名
拷贝arthas程序包到容器目录下
[root@localhost java]# docker cp arthas-boot.jar 50e46094fa16:/appdata
进入到容器目录
[root@localhost java]# docker exec -it 50e46094fa16 /bin/sh
启动arthas,并选择想要操作的进程序号
java -jar arthas-boot.jar
报了一个Unable to get pid of LinuxThreads manager thread的错误
错误信息
[ERROR] Start arthas failed, exception stack trace:
com.sun.tools.attach.AttachNotSupportedException: Unable to get pid of
LinuxThreads manager thread at
sun.tools.attach.LinuxVirtualMachine.(LinuxVirtualMachine.java:86)
at
sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78)
at
com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250)
at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:99) at
com.taobao.arthas.core.Arthas.(Arthas.java:26) at
com.taobao.arthas.core.Arthas.main(Arthas.java:137) [ERROR] attach
fail, targetPid: 1
GitHub Issues对应解决方案
https://github.com/alibaba/arthas/issues/362
提出两种解决方案:
原来启动程序的docker命令:
docker run 相关参数
修改后:
docker run --init 相关参数
重新启动后,java进程对应的容器id发生变化,重复上述步骤
启动成功
输入dashboard,可以看到当前进程的相关信息
也可以直接使用下面的命令直接启动arthas,前提是已经将arthas程序包拷贝到了对应的/appdata目录下,/appdata是我的容器目录,改成自己的即可
docker exec -it 03d667f1dd2f /bin/sh -c "java -jar /appdata/arthas-boot.jar"
使用stop命令停止进程或者exit退出进程