arthes简介
以下是arthes官网原文:
通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。
开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。
如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。
Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启,无需代码更改。 Arthas 作为观察者永远不会暂停正在运行的线程。
官网原文把功能写的已经很通透易懂了,我这边主要是补充一下它的用法和一些插件。
官网地址:简介 | arthas
用法介绍
1. 启动arthes
下载arthas-boot.jar
,然后用java -jar
的方式启动:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
启动之后arthes会将当前运行的所有应用都列举出来,如下:
然后从1、2、3中选择一个进入,这里我选择3进入,但是报错了,没关系按照它第三条提示的命令重启一下 ,成功进入。
这里的SpringBoot-query-0.0.1-SNAPSHOT.jar就是我写的一个测试应用。
2. 反编译java类
命令格式:jad 包路径+类名
3. 函数执行数据观测
这个一般使用它的watch指令,但是自己去拼实在是太麻烦了。下面介绍一个插件,如果你的开发工具是idea,那么可以去插件市场搜索arthes
安装之后,打开编辑器,选中方法名,右键打开工具条
这样就会生成一条监测命令,粘贴到刚才的arthes控制台即可,调用一下该方法,就可以看到出入参数了,非常的便捷好用。
watch指令使用的最多,多用于调试功能。
4. 方法内部调用路径,并输出方法路径上的每个节点上耗时
使用idea插件生成方法的trace命令,贴到arthes控制台,如下:
这样就可以很清楚看到这个方法调用了哪些类、哪些方法并且把耗时打印出来了。
5. 方法执行监控
使用idea插件生成方法的monitor命令,贴到arthes控制台,如下:
monitor命令一般用于统计方法的平均耗时。