如何用Arthas重启热更新
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,如何用Arthas重启热更新,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、前言热更新代码的场景1)当线上服务器出现问题时,有些时
千家信息网最后更新 2025年12月01日如何用Arthas重启热更新
如何用Arthas重启热更新,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一、前言
热更新代码的场景
1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码
2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题。
二、Arthas的使用
使用Java诊断工具---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指标,还可以进行热更新。
1、下载启动Arthas
wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar
2、启动后会显示当前机器上面所有的java进程,选择我们需要监控/修改的进程,输入序号回车
3、一些常用命令,如果线上出现问题,可以通过以下命令查看各项指标是否有异常
dashboard--当前系统的实时数据面板thread--查看当前 JVM 的线程堆栈信息jvm--查看当前 JVM 的信息sysprop--查看和修改JVM的系统属性sysenv--查看JVM的环境变量getstatic--查看类的静态属性
1)打印前五名最消耗CPU的线程,可以及时找到CPU过高的代码位置
thread -n 5
2)查看某个函数的调用堆栈
stack <类全包名> <函数名>
3)查看某个函数的哪个子调用最慢,耗时最久的调用会标红显示,可以方便找出某个功能中最耗时的操作
trace <类全包名> <函数名>
4)监控某个函数的调用统计数据,包括总调用次数,平均运行时间,成功率等信息
monitor <类全包名> <函数名>
4、输入exit可以退出当前的连接,但是附着在服务器进程上的Arthas依然在运行,完全退出可以输入shutdown
三、热更新
1、首先找到我们需要更新代码的全包名,通过jad命令将线上正在运行的代码反编译出来
jad --source-only <全包名> > <导出目录+文件名>
2、拿到java代码后,我们根据需求来修改代码,需要注意的是这里热更新代码的实际原理是调用Java基础类java.lang.instrument.Instrumentation的redefineClasses方法,他可以通过修改字节码来替换已有的class文件,其中有诸多的限制:
1)比如不能增加或删除field/method
2)没有退出的函数不能生效,比如一个函数体内是一个where(true)循环,永远不会结束,那么我们修改的代码也永远不会生效
我们可以在函数中增加一些代码,比如增加日志打印等
3、修改好代码后,我们要找到这个这个类对应的类加载器,再去加载这个class,执行如下命令会返回类加载器的对象地址
sc -d <全包名> | grep classLoaderHash
4、通过内存编译将Java文件编译成Class文件
mc -c <类加载器的对象地址>
5、最后,我们通过命令将class文件进行热更新
redefine
关于如何用Arthas重启热更新问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
代码
问题
更新
函数
命令
可以通过
文件
服务器
进程
服务
信息
编译
输入
运行
堆栈
属性
手段
指标
数据
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
长岛软件开发哪家好
软件开发客户需求文档
服务器双网卡配置与启用
个人简介计算机网络技术
西子奥迪斯服务器杳故障
成都网络安全周2019
软件开发第一步怎么做
金蝶服务器连接不上网
自我介绍范文软件开发
是网络安全的重中之重包括领域
如何定义高级软件开发工程师
海淀区网络技术市场报价
公众号怎么导入数据库
cvh数据库
无效服务器名称
吃鸡la是什么服务器
抖音服务器好不好
广州正品集团软件开发
如何建数据库索引
怎么租国外的服务器
怎么样知道自己电脑的服务器地址
sql脚本导入数据库
服务器网口灯橙色闪烁
战术小队为啥老是服务器断开
画画的网络安全
信息收集软件开发需求模版
star数据库全称
大数据软件开发工程师有钱吗
filiation 软件开发
数据库2005安装教程