arthas介绍
Arthas是Alibaba开源的一款Java诊断工具,方便开发者在线排查问题,无需重启,同时可以跟踪Java代码,实时监控JVM状态,便于开发者进行快速定位和诊断问题。 Arthas主要是通过Java agent技术实现的,可理解为一个有插件作用的jar包, 这个jar包通过JVMTI (JVM Tool Interface)完成加载。
1.arthas能解决什么问题
(1) 这个类从哪个 jar 包加载的?解决依赖冲突问题 (2)我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? (3)遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? (4)有什么办法可以监控到JVM的实时运行状态?
2.arthas的安装
官方文档:arthas.aliyun.com/doc/install…**
idea插件,可以快速获取命令
3.基本命令使用
连接方式有3种
(1)直接启动,选择进程
(2)使用javaagent方式
(3)引用starter依赖
watch 观察接口的出入参(比如忘记打日志),是否有异常等
trace 查看接口调用链
sc 查看已加载的类,解决依赖冲突问题
thread 查看当前jvm线程,排查死锁等问题
jad 反编译代码,查看是否是最新代码
tt 查看接口耗时,重放接口调用
logger 查看日志级别等,修改日志级别
stop 停止arthas
arthas 可以异步执行后台任务,打印日志, 以及dump文件
4.arthas的使用示例
避免重启应用:github.com/alibaba/art…
线上定位cpu占用过高等问题:github.com/alibaba/art…
灵活使用ognl:github.com/alibaba/art…
redafine 热替换,参考示例:juejin.cn/post/696165…