在docker中使用arthas

arthas官网:https://arthas.aliyun.com/doc/quick-start.html#math-game

1、进入到服务部署的机器环境中

这里直接使用的xshell进行的连接
在docker中使用arthas_第1张图片

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

在docker中使用arthas_第2张图片

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

在docker中使用arthas_第3张图片
报了一个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中使用arthas_第4张图片
原来启动程序的docker命令:

docker run 相关参数

修改后:

docker run --init 相关参数

重新启动后,java进程对应的容器id发生变化,重复上述步骤
在docker中使用arthas_第5张图片
启动成功
输入dashboard,可以看到当前进程的相关信息
在docker中使用arthas_第6张图片
也可以直接使用下面的命令直接启动arthas,前提是已经将arthas程序包拷贝到了对应的/appdata目录下,/appdata是我的容器目录,改成自己的即可

docker exec -it 03d667f1dd2f /bin/sh -c "java -jar /appdata/arthas-boot.jar"

使用stop命令停止进程或者exit退出进程

你可能感兴趣的:(性能调优,docker)