1.安装
curl -L https://alibaba.github.io/arthas/install.sh | sh
2.选择要观察的进程
执行./as.sh 查看进程列表 选择要观察的进程编号 回车 Arthas会attach到目标进程上,并输出日志:
3.根据阿里巴巴官方文档 用命令查看虚拟机各种运行数据 https://alibaba.github.io/arthas/advanced-use.html
在dock中使用Arthas
1.进入容器
docker exec -it communication bash
2.在容器中新建目录 并安装工具 后续使用同上
mkdir walle
cd walle
curl -L https://alibaba.github.io/arthas/install.sh | sh
./as.sh
3.学习资料
1.https://pan.baidu.com/s/1SHzaWwx-DOPjZLVs3zDz5A 提取码1111
在k8s放入 arthas调试 1.arthas.tar.gz和debug.sh文件上传到服务器路径 /home/intellif 【脚本中路径已写死】 2.进入容器内,解压arthas.tar.gz【 tar -zxvf arthas.tar.gz 】
2.执行脚本 输入容器名称 然后容器内启动 root@ubuntu:/opt/arthas-3.3.3-bin# java -jar arthas-boot.jar
3. idea里面插件有部分对应命令,我一般就用watch和monitor
新版本的arthas的idea插件 ,生成参数多了一个 -v, 把这个参数去掉,不然执行有异常
4.arthuas官方使用文档 https://arthas.aliyun.com/doc/
5.OGNL表达式 https://juejin.cn/post/6844904130591326215
6.查找cpu占用多的线程
在arthas里面输入如下命令,查看CPU使用率TOP N的线程 thread -n 5
6.排查占用内存过多的问题
在arthas里面输入如下命令 heapdump 得到dump文件 --> jdk安转目录下使用jhat分析dump文件
访问启动端口 查看内存对象创建情况
7.quit 退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
stop——和shutdown命令一致 表示关闭 Arthas 服务端,所有 Arthas 客户端全部退出
8.在线更新class文件内容
8.1.反编译
jad --source-only com.intellif.community.service.impl.TendencyPersonRecordServiceImpl > /tmp/TendencyPersonRecordServiceImpl.java
8.2.新开一个ssh 进入文件存储位置/tmp文件夹 修改文件
vi TendencyPersonRecordServiceImpl.java
8.3.查找加载的 ClassLoader
sc -d *TendencyPersonRecordServiceImpl | grep classLoaderHash
8.4.编译
mc -c 42a57993 /tmp/TendencyPersonRecordServiceImpl.java -d /tmp
8.5.热更新
redefine /tmp/com/intellif/community/service/impl/TendencyPersonRecordServiceImpl.class