使用arthas排查JVM运行情况,Docker内运行

Arthas是什么?

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

为什么选他?

因为容易上手,并且将线程、GC、内存、运行情况等信息都很清晰的展示出来了,并且有插件可以在idea上面使用插件连接到线上,进行线下监控并且调优,而且还是阿里开源工具

Arthas

官方文档地址:https://arthas.aliyun.com/doc/
GitHub地址:https://github.com/alibaba/arthas

简单操作(Linux)

在你的程序系统上面,运行下面的命令,如果是docker则需要到容器里面执行

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
  • 执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar。
  • 如果 attach 不上目标进程,可以查看~/logs/arthas/ 目录下的日志。
  • 如果下载速度比较慢,可以使用 aliyun 的镜像:java -jar arthas-boot.jar --repo-mirror aliyun --use-http
  • java -jar arthas-boot.jar -h 打印更多参数信息。

执行这个命令以后控制台会输出对应的java进程。例如官网教程:
在这里插入图片描述
选择你的java程序,如果是1就输入 1 回车,2就输入2回车
回车以后会自动下载相关监控的jar包,然后会进入到arthas里面
在这里插入图片描述

常用命令

官网文档介绍:https://arthas.aliyun.com/doc/commands.html

我用的比较多的就是:
1、dashboard 当前系统的实时数据面板
2、options save-result true 开启日志存储
3、thread 查看线程执行情况
4、jvm 查看jvm信息
还有很多命令可以到上面的文档上面看

程序在Docker里面,怎么监控?

1、确保你的docker容器里面有jdk,而不是jre
官网描述:docker官网教程

很多时候,应用在 docker 里出现 arthas 无法工作的问题,是因为应用没有安装 JDK ,而是安装了 JRE 。
如果只安装了 JRE,则会缺少很多 JAVA 的命令行工具和类库,Arthas 也没办法正常工作。
下面介绍两种常见的在 Docker 里使用 JDK 的方式。
FROM openjdk:8-jdk

或者

FROM openjdk:8-jdk-alpine

第一种

docker exec -it {containerId}   /bin/sh -c "wget https://arthas.aliyun.com/arthas-boot.jar"

下载完以后进入容器内部
docker exec -it {containerId} bash
然后 java -jar arthas-boot.jar 就是上面的操作
缺点:重新部署jar就没有了,得重新安装

第二种

将Arthas制作成基础镜像,程序启动的时候使用脚本自动copy进容器内,该方法没有实操过,各位懂哥可以实操后放在评论区。

实操

在这里插入图片描述

在这里插入图片描述

options save-result true 开启日志永久存储

在这里插入图片描述
结果会异步保存在:{user.home}/logs/arthas-cache/result.log,请定期进行清理,以免占据磁盘空间
user.home = 你linux上是哪个用户,我是root,所以我的logs日志在 /root/logs/arthas-cache/
在这里插入图片描述

查看 dashboard

输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。
在这里插入图片描述
然后就可以结合,thread命令来查看线程

问题

由于是在docker里面运行,这个操作存储的日志会在下一次程序重新部署的时候销毁掉,在需要调优的时候最好是将容器内的log日志
copy到linux上面进行日志排查
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿泽java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值