1
问题背景
当我们发现线上出现bug,在排查时可能不是很好确认问题,并且最好保留现场,才能重现问题,或者需要快速修复bug,才能比较快速或者方便的临时解决紧急问题。这时,热更新就能很好的帮助我们了。虽然可以通过发版进行解决生产问题,但是项目频繁发版会存在一定的风险:
比如用户正在使用对应功能,会影响用户的使用体验。
紧急版本上线可能还需要领导的特别审核。
等到下一版本再修复,等待的时间可能太久了。
这时如果能热更新线上的部分代码,协助我们尽早的找到问题,并且快速解决bug,快速解决问题也能得到领导和同事的认可,所以需要掌握一定的救火技能是极其必须的。
这里就分享下我的使用经验:最近在排查一个生产线程安全问题,在获取主机连接时,出现不能确定是否获取准确的对应连接,即当前连接的机器是否正确的。
大致流程如下:
这里你可以不理解我的场景需求,只需要看我是怎么使用热更新解决问题即可。
2
排查解决:热更新
1)第一步,修改代码
在代码中增加相应的日志代码,并且将相应的Java代码文件编译成class字节码文件HostFactoryImpl.class。将字节码文件上传到生产服务器。
以上就是目标类的相关信息。
3
总结
Arthas官方文档sc命令:https://alibaba.github.io/arthas/sc.html
参考:
https://www.jianshu.com/p/efa46ccdd7f0
推荐阅读
-关注搬运工来架构,与优秀的你一同进步-
本文仅供学习!所有权归属原作者。侵删!文章来源: 搬运工来架构
文章评论