arthes—线上debug好帮手

arthes简介

以下是arthes官网原文:

通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。

开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。

如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。

Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启,无需代码更改。 Arthas 作为观察者永远不会暂停正在运行的线程。

Arthas(阿尔萨斯)能为你做什么?

Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到 JVM 的实时运行状态?
  7. 怎么快速定位应用的热点,生成火焰图?
  8. 怎样直接从 JVM 内查找某个类的实例?

Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

官网原文把功能写的已经很通透易懂了,我这边主要是补充一下它的用法和一些插件。

官网地址:简介 | arthas

Arthas安装

1. 使用命令行方式安装

  1. 下载临时安装包
shell 复制代码
curl -L [http://pandora.alibaba-inc.com/pandora-web/arthas/install.sh](http://pandora.alibaba-inc.com/pandora-web/arthas/install.sh "http://pandora.alibaba-inc.com/pandora-web/arthas/install.sh") | sh
  1. 输入 ./as.sh开启

  2. 选择要监控的jar然后按回车键即可

2. 下载jar包的方式安装

  1. 下载jar包
shell 复制代码
curl -O https://arthas.aliyun.com/arthas-boot.jar
  1. 启动jar包
shell 复制代码
java -jar arthas-boot.jar
  1. 选择要监控的jar然后按回车键即可 ​

3. 启动监控

启动之后arthes会将当前运行的所有应用都列举出来,如下:

然后从1、2、3中选择一个进入,这里我选择2(这里的SpringBoot-query-0.0.1-SNAPSHOT.jar就是我写的一个测试应用。)进入,但是报错了,没关系按照它第三条提示的命令重启一下 ,成功进入。

Arthas使用

1. 反编译java类

命令格式:jad 包路径+类名

2.函数执行数据观测

这个一般使用它的watch指令,但是自己去拼实在是太麻烦了。下面介绍一个插件,如果你的开发工具是idea,那么可以去插件市场搜索arthes

安装之后,打开编辑器,选中方法名,右键打开工具条

这样就会生成一条监测命令,粘贴到刚才的arthes控制台即可,调用一下该方法,就可以看到出入参数了,非常的便捷好用。

watch指令使用的最多,多用于调试功能。

3. 方法内部调用路径,并输出方法路径上的每个节点上耗时

使用idea插件生成方法的trace命令,贴到arthes控制台,如下:

这样就可以很清楚看到这个方法调用了哪些类、哪些方法并且把耗时打印出来了。

4. 方法执行监控

使用idea插件生成方法的monitor命令,贴到arthes控制台,如下:

monitor命令一般用于统计方法的平均耗时。

这里我就不做官网文档的搬运工了,感兴趣的同学可以自己去瞅一眼,功能真的很强大,值得一用,官网地址:简介 | arthas

相关推荐
sg_knight3 小时前
Spring 框架中的 SseEmitter 使用详解
java·spring boot·后端·spring·spring cloud·sse·sseemitter
喵个咪6 小时前
初学者入门:用 go-kratos-admin + protoc-gen-typescript-http 快速搭建企业级 Admin 系统
后端·typescript·go
用户21411832636028 小时前
手把手教你用Claude制作专属PPT生成器-从模板学习到自动生成全流程实战
后端
计算机毕设匠心工作室9 小时前
【python大数据毕设实战】全面皮肤病症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
摆烂工程师9 小时前
2025年12月最新的 Google AI One Pro 1年会员教育认证通关指南
前端·后端·ai编程
qq_124987075310 小时前
基于SpringBoot+vue的小黄蜂外卖平台(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·后端·mysql·毕业设计
代码与野兽10 小时前
AI交易,怎么让LLM自己挑选数据源?
前端·javascript·后端
天天摸鱼的java工程师10 小时前
JDK 25 到底更新了什么?这篇全景式解读带你全面掌握
java·后端
CC码码10 小时前
前端文本分割工具,“他”来了
前端·javascript·程序员
非鱼feiyu10 小时前
自关联数据表查询优化实践:以 Django + 递归 CTE 构建树结构为例
数据库·后端·django