docker使用arthas基本教程

供参考也是自己的笔记
docker容器下使用遇到的问题:大致是连接不上1号进程
我这边主要的问题是用户权限问题,docker容器使用aaa用户启动,那个在docker容器内,需要使用aaa用于启动

  1. docker 容器如何使用arthas
#实现下载好arthas jar包,使用docker cp进行复制
docker cp  <arthas.jar_path>  <containerName>:<containerPath>
#进入容器
docker exec -it <containerName> /bin/bash
#执行arthas,找到arthas,执行
java -jar arthas.jar
  1. 如何解决docker容器挂在不上1号进程(用户权限问题)
#查看用户权限
cat /etc/passwd
#需要把用户权限改成/bin/bash,使用vi或者vim进行编辑就好(sbin/nologin是不行的,需要改成/bin/bash)

在这里插入图片描述

#切换用户
su aaa
  1. 这样我这般就挂载上了,然后下面就是运用了【以下是我的使用教程】
  • 寻找类路径
sc -d *className
  • 监控方法耗时
    在这里插入图片描述

  • 监控方法执行频率

monitor class  method  -c  5
  • 监测方法参数,执行结果,异常等信息
watch class  method '{params, target, returnObj, throwExp}' -x 5
  • 内存快照
headdump

在这里插入图片描述
使用visualVM打开分析
在这里插入图片描述

查看阻塞线程
问题描述:服务启动过程中,main线程会启动各个模块,但是对接第三方sdk的时候(对方采用netty实现tcp服务端)main线程启动对应模块时,一直阻塞,导致其他模块启动不了,但已启动的模块不受影响,未启动的模块受到影响
在这里插入图片描述
thread -b就发现线程阻塞了(发现问题就很好解决问题了,new一个线程去启动就好了,不影响其他模块启动)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值