java高级开发

【Arthas】诊断工具在docker中使用

2024-02-01  本文已影响0人  老鼠AI大米_Java全栈

在实际工作中很多的服务都使用docker部署,如果直接在服务器中使用Arthas则找不到运行的服务而无法使用Arthas进行诊断,因此需要进入到容器内部才能使用Arthas进入诊断。

进入服务器下载arthas-boot

curl -O https://arthas.aliyun.com/arthas-boot.jar

复制arthas-boot到容器内

复制arthas到容器内根目录下
docker cp arthas-boot.jar d78b2477186c:/arthas-boot.jar 

进入容器内部
docker exec -it d78b2477186c bash;

运行arthas

java -jar arthas-boot.jar

输入arthas命令

输入命令dashboard就可以看到,到这里就可以对服务进行诊断了,具体的arthas命令见官方文档或安装idea插件

Arthas 官方的工具还不够足够的简单,需要记住一些命令,特别是一些扩展性特别强的高级语法,比如ognl获取spring context 为所欲为,watch、trace 不够简单,需要构造一些命令工具的信息,因此只需要一个能够简单处理字符串信息的插件即可使用。当在处理线上问题的时候需要最快速、最便捷的命令,因此插件还是有存在的意义和价值的。

常用命令

jvm 相关
class/classloader 相关
monitor/watch/trace 相关

注意
请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。

monitor - 方法执行监控
profiler/火焰图
鉴权
options
管道

Arthas 支持使用管道对上述命令的结果进行进一步的处理,如 sm java.lang.String * | grep 'index'

后台异步任务

当线上出现偶发的问题,比如需要 watch 某个条件,而这个条件一天可能才会出现一次时,异步后台任务就派上用场了

基础命令
上一篇 下一篇

猜你喜欢

热点阅读