赞
踩
生产环境中如果大家遇到紧急的bug需要修复,但是又害怕重启应用导致告警或影响的,还有容器部署的需要重新打镜像包的小伙伴,这里给大家提供个不需要重启应用的方法,也能够对应用进行紧急变更,实现代码热部署。
但是目前仅限于class类中没有新增方法的热部署,可以进行一些逻辑bug的修复操作。
1、首先,我们先启动arthas应用,选择你需要更新的应用ID。安装包可以到阿里仓库下载。
- # 执行运行启动arthas
- java -jar arthas-boot.jar
2、接着按照下面步骤完成操作:
- 第一步:jad --source-only com.xxx.xxx.Test> /usr/local/arthas/Test.java
-
- 第二步:修改/usr/local/arthas/Test.java
-
- 第三步:mc /usr/local/arthas/Test.java -d /usr/local/arthas/
-
- 或者
-
- sc -d com.xxx.xxx.Test | grep classLoaderHash
-
- mc -c 18b4aac2 /usr/local/arthas/Test.java -d /usr/local/arthas/
-
- 第四步:retransform /usr/local/arthas/com/xxx/xxx/Test.class
- (这里也可以在本地编译好class文件直接替换)
-
- 第五步:jad --source-only com.allinpay.xxx.xxx.Test
最后提醒下,要注意包的结构需要保持一致,热部署后cpu会出现短暂的冲高,对cpu变化影响比较大的应用不建议使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。