如何使用arthas提高日常开发效率(arthastt命令使用方法)

技术如何用Arthas重启热更新如何用Arthas重启热更新,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、前言热更新代码的场景1)当线上服务器出现问

如何用阿尔萨斯重启热更新,针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的小伙伴找到更简单更容易的方法。

一、前言

热更新代码的场景

1)在线服务器出现问题时,有时现有手段不足以发现问题,可能需要打印额外的日志或添加一些调试代码。如果我们更改代码并重新部署,就会破坏问题站点,我们可以通过热部署的方式添加调试代码。

2)如果线路上有紧急bug,通过Review代码发现问题。修改后打包部署的过程可能需要很长时间,通过热部署代码可以及时解决问题。

00-1010使用可以附加到我们的Java服务器进程的Java诊断tool-Arthas,检查各种参数,如服务器状态和jvm状态,并执行热更新。

1.下载并启动阿尔萨斯

wget https://Alibaba . github . io/Arthas/Arthas-boot . jar Java-jar Arthas-boot . jar

2.启动后,将显示当前机器上的所有java进程。选择我们需要监控/修改的流程,输入序列号并输入。

3.对于一些常见的命令,如果在线出现问题,可以通过以下命令检查各指示灯是否有异常。

Dashboard——当前系统线程的实时数据面板——查看当前jvm的线程堆栈信息——查看当前JVM sysprop的信息——查看和修改JVM sysenv的系统属性——查看JVM getstatic的环境变量——查看类的静态属性

1)打印消耗CPU最多的前五个线程,可以及时找到CPU过高的代码位置。

线程-n5

2)检查某个函数的调用栈。

类堆栈全包名函数名

3)通过检查函数的哪个子调用最慢、最长,方便找出函数最耗时的操作。

跟踪类完整包名函数名

4)监控某个功能的调用统计,包括调用总数、平均运行时间、成功率等信息。

监视器类函数名的完整包名

4.输入exit退出当前连接,但连接到服务器的Arthas进程仍在运行,您可以输入shutdown以完全退出。

00-1010 1.首先,找到我们需要更新的代码的完整包名,并通过jad命令反编译在线运行的代码。

Jad jad -仅源完整包名导出目录文件名

2.得到java代码后,我们根据需求修改代码。需要注意的是,这里热更新代码的实际原理是调用Java基本类Java . lang . instrumentation . instrumentation的redefineClasses方法,他可以通过修改字节码来替换现有的类文件,这有很多局限性:

1)例如,不能添加或删除字段/方法。

2)未退出的功能无法生效。例如,函数体中的where(true)循环永远不会结束,因此我们修改的代码永远不会生效。

我们可以给函数添加一些代码,比如添加日志打印。

3.修改完代码之后,我们需要找到这个类对应的类加载器,然后加载这个类。执行以下命令将返回类加载器的对象地址。

Sc-d完整包名| grepclasssloaderhash

4.通过内存编译将Java文件编译成Class文件。

mc-c类加载器的对象地址Java文件目录文件名

5.最后,我们通过命令更新类文件。

redefineClass文件所在目录的文件名,以及如何用阿尔萨斯重启热更新这个问题的答案,希望在这里分享。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154119.html

(0)

相关推荐

  • 怎样进行MS SQL安全身份设置

    技术怎样进行MS SQL安全身份设置本篇文章为大家展示了怎样进行MS SQL安全身份设置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面的内容涉及到修改NTFS磁盘权限和设置安

    攻略 2021年11月30日
  • 硫酸除铁锈的化学方程式,出铁形成铁锈的化学方程式

    技术硫酸除铁锈的化学方程式,出铁形成铁锈的化学方程式2Fe+O2+2H2O=2Fe(OH)2然后再氧化:
    4Fe(OH)2+O2+2H2O=4Fe(OH)3
    但我们所见到的铁锈其实是Fe2O3的水合物硫酸除铁锈的化学方程

    生活 2021年10月28日
  • js 定时器的用法和清除

    技术js 定时器的用法和清除 js 定时器的用法和清除一、设置定时器window对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和window.setInterval。

    礼包 2021年11月14日
  • 使用Redis之前5个必须了解的事情有哪些

    技术使用Redis之前5个必须了解的事情有哪些这篇文章给大家介绍使用Redis之前5个必须了解的事情有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用Redis开发应用程序是一个很愉快的过程,

    攻略 2021年11月10日
  • 龙眼肉的做法,四川特色菜蒸龙眼肉是怎么做的

    技术龙眼肉的做法,四川特色菜蒸龙眼肉是怎么做的药用龙眼肉的做法: 配方:  龙眼肉50~100G
    制法:  龙眼肉置碗内,隔水蒸熟。
    功能:  补心安神,养血益脾。
    主治:  心脾两虚之心悸失眠,多梦易惊。

    生活 2021年10月31日
  • 怎么解决RAC数据库环境修改scanip后客户端连接异常

    技术怎么解决RAC数据库环境修改scanip后客户端连接异常这篇文章主要讲解了“怎么解决RAC数据库环境修改scanip后客户端连接异常”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来

    攻略 2021年11月5日