记录一次 Arthas 使用

栏目: IT技术 · 发布时间: 4年前

内容简介:疫情期间,在家办公,每天都是 007,感觉自己已经升级为熊猫特工了,心累,身体疲惫!!!今天终于有时间休息一下,然后记录一下在家办公期间 Arthas 的简单使用。

记录一次 Arthas 使用

前言

疫情期间,在家办公,每天都是 007,感觉自己已经升级为熊猫特工了,心累,身体疲惫!!!

今天终于有时间休息一下,然后记录一下在家办公期间 Arthas 的简单使用。

下载安装

Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。不仅仅有 IntelliJ IDEA 主流版本,还有 Eclipse、Pycharm、Maven 等其他版本。

启动:java -jar arthas-boot.jar

这里需要重点说明一下:必须使用和目标进程相同的用户,否则启动不成功。

问题背景

> 本人前天刚上线一个任务。由于某产品手误,误操作了线上数据,要求帮忙把数据删除了。

这尼玛的真坑啊,明显是坑老子。

还好有先见之明,没次做任务的时候多多少少都会写几个后门工具( 不是为了删库跑路,而是这些后门在特定情况下真能应急使用,求人不如求己 )。但是这次后门 工具 还有改造一下才行,大半夜的又找不到人来帮你上线,自己又没有权限。这时候想起了 Arthas 这个工具可以热加载。

重点来了

  • jad 反编译代码
jad --source-only com.xxx.xxx.service.aggregate.AggregateNoRoomService > /tmp/AggregateNoRoomService.java

复制代码

这里有保密协议限制,包路径已经打码,小伙伴们直接看过程就可以了。

  • vim 修改反编译出来的代码
public AggregateNoRoom getAggregateNoRoom(String agentHotelId) {

      List<AggregateNoRoom> aggregateNoRooms = aggregateNoRoomDao.selectList(agentId);

        if (CollectionUtils.isEmpty(aggregateNoRooms)) {

        return null;

    }

    //新增加的逻辑

    for (AggregateNoRoom room : aggregateNoRooms) {

      aggregateNoRoomDao.delete(room.getId())

    }

    return aggregateNoRooms.get(0);

}

复制代码
  • 将这个类重新编译成 class 文件

这里就不过说明了,简单的程序直接javac x x x x.java就可以了,但是我这个类里面还依赖了其他的类型,所以我是用maven直接编译的整个 Java 项目,然后但是把这个新的class文件copy出来然后上传到服务器的。

正常来说是应该使用 Arthasmc 命令来重新编译这个修改后文件。但是我在服务器上始终没有编译成功,错误原因以后在研究。

  • sc 查找加载 **AggregateNoRoomService **的 ClassLoader

sc -d * AggregateNoRoomService | grep classLoaderHash

返回结果:classLoaderHash 1b36fa2

  • redefine 热更新代码

redefine -c 1b36fa2 /tmp/AggregateNoRoomService.class

返回结果:redefine success, size :1

这是时候可以在使用 jad 命令,在反编译一下这个类,看看是不是真正更新成功了。

执行后门工具

> 见证奇迹的时候到了,数据被清理掉了,没有求 ops 给你开权限重新部署程序,没有给你的 tl 打电话说要临时审批一个脚本,太爽了。

但是我在这里还是强调一下,最好还是慎用,毕竟走正规流程还不不用背锅的。(这么做很容背锅,而且产品小哥或者产品小姐姐下次会直接找你帮我修复点数据呗,直接绕过了你领导或上级。_说明我这里真的没有黑产品, 来吧互相伤害吧_)

总结

Arthas 其实还是很强大的,可以帮我们排查线上问题,环境允许的情况建议可以使用,会带来很多便利,这里就过多说明了。

Arthas 征文活动火热进行中

Arthas 官方正在举行征文活动,如果你有:

  • 使用 Arthas 排查过的问题
  • 对 Arthas 进行源码解读
  • 对 Arthas 提出建议
  • 不限,其它与 Arthas 有关的内容
    欢迎参加征文活动, 点击投稿

阿里巴巴云原生 关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”


以上所述就是小编给大家介绍的《记录一次 Arthas 使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Seasoned Schemer

The Seasoned Schemer

Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 38.00

drawings by Duane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (form......一起来看看 《The Seasoned Schemer》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具