一 Arthas简介
1.1 Arthas是阿里巴巴开源的Java程序诊断工具。
https://alibaba.github.io/arthas/install-detail.html
快速安装与启动
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
二 代码热部署
2.1 1分钟教程
- 遇到线上问题无法debug,只能加log重新发布吗?
- 线上代码为什么没有执行到这里,是没有commit还是分支搞错了?
- 线上某个用户的数据有问题,测试环境无法复现,怎么办?
Arthas三个命令搞定:
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
mc /tmp/UserController.java -d /tmp
redefine /tmp/com/example/demo/arthas/user/UserController.class
//jad命令反编译,然后可以用其它编译器,比如vim来修改源码
//mc命令来内存编译修改过的代码
//用redefine命令加载新的字节码
2.2 上传.class文件到服务器的技巧
mc编译class文件可能失败
可以在本地修改,编译好在上传到服务器。
有的服务器不允许上传文件,可以通过base64来绕过。
1.在本地先转换.class文件为base64,再保存为result.txt
base64 < Test.class > result.txt
2.到服务器上,新建并编辑result.txt,复制本地的内容,粘贴再保存
3.把服务器上的 result.txt还原为.class
base64 -d < result.txt > Test.class
4.用md5命令计算哈希值,校验是否一致
md5 Test.class
md5 result.txt
2.3 redefine的限制
1.不允许新增加field/method
2.死循环里添加的代码不生效
Arthas代码热部署快速指南
本文介绍了阿里开源的Java诊断工具Arthas,特别是其代码热部署功能。通过Arthas的jad、mc和redefine命令,开发者可以在不重启服务的情况下修改线上代码,解决线上问题。此外,还分享了在服务器上进行类文件上传和校验的技巧,以及redefine命令的限制。
4371

被折叠的 条评论
为什么被折叠?



