如何使用 Arthas ? 一篇搞定Java应用诊断神器 Arthas

在线调试工具 Arthas Arthas(阿尔萨斯) 是 Alibaba开源的 Java诊断工具,深受开发者喜爱。 当遇到以下类似问题而束手无策时,Arthas 可以帮助你解决: 【1】这个类从哪个 jar 包加载的? 为什么会报各种类相关的 Exception? 【2】我改的代码为什么没有执行到? 难道是我没 commit? 分支搞错了? 【3】遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 【4】线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 【5】是否有一个全局视角来查看系统. 阅读详情
AI摘要

本文介绍了阿里巴巴开源的Arthas工具,它支持实时监控Java服务状态、方法调用分析、在线热更新代码、解决类冲突和性能优化等功能,通过实例展示了其核心命令和应用场景。,

Arthas 是由阿里巴巴开源,在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。(Arthas官方地址)

一、Arthas 的六大特性

  • Dashboard:实时查看Java服务的运行状况;
  • 查看入参/返回值/异常:可实时查看方法调用的入参、返回值、异常;
  • 在线热更新:jad -> sc -> redefine 一条龙热更新代码;
  • 类冲突:秒解类冲突问题,定位类加载路径;
  • 性能热点:快速定位应用的热点,生成火焰图;
  • Webconsole:在线诊断,点开网页及时诊断线上应用;

二、Arthas 实践

1. dashboard命令

使用dashboard命令可以获取当前Java服务的运行状态信息,如线程状况,GC情况等。

  • 使用命令启动arthas, java -jar arthas-boot.jar

在这里插入图片描述

  • 找到arthas 进程要附加的目标进程,输入该进程对应序号;

在这里插入图片描述

  • 输入 dashboard 命令,可以观察到 Java 服务的配置信息如下;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. thread 命令

查看当前线程信息,查看线程的堆栈。

  • thread -n 2 :显示当前最忙的2个线程,并打印出线程栈。

在这里插入图片描述

  • thread {id} : thread + 线程ID,显示出指定ID的线程具体情况。下面以线程ID为25为例。

在这里插入图片描述

3. watch 命令

用于方法执行过程中的数据观测。可观测的数据包括入参、返回值、抛出的异常。可根据不同的参数选项来决定观测不同的参数。除此之外,还有4个观测点(观测时机),通过如下4个参数指定指定观测点,默认仅 -f 生效。

-b: 方法被调用之前;
-e: 异常抛出后;
-f: 方法执行完成后,默认生效。
-s: 方法返回之后;

3.1 观察指定方法的返回值

  • watch {full_class_name} {method_name} -x {n} :

{full_class_name}: 全限定类名;
{method_name} : 指定类下的方法名;
-x : 该选项后面跟一个数字,用于指定返回对象结果的递归深度;

该条命令表示要观测指定类中某方法的返回值,且对返回值对象内容递归 {n} 层的深度,该命令示例如下:

在这里插入图片描述

3.2 观察指定方法的入参、返回值

  • watch {full_class_name} {method_name} "{params, returnObj}" -x {n} -b :

{full_class_name}: 全限定类名;
{method_name} : 指定类下的方法名;
{params, returnObj}: 要求打印出入参和返回值;
-x : 该选项后面跟一个数字,用于指定返回对象结果的递归深度;
-b: 使用该参数表示增加方法调用前观测点。默认已使用 -f 选项;

该条命令表示要观测指定类下某个方法的入参和返回值,且对返回值对象内容递归 {n} 层的深度,该命令示例如下:

在这里插入图片描述

3.3 观察指定方法的执行耗时

  • watch {full_class_name} {method_name} "{params, returnObj}" "#cost>{t}" -x {n} :

{full_class_name}: 全限定类名;
{method_name} : 指定类下的方法名;
{params, returnObj}: 要求打印出入参和返回值;
"#cost>{t}": {t} 是自己设置的时间段长度,默认单位是ms,
-x : 该选项后面跟一个数字,用于指定返回对象结果的递归深度;

该条命令表示输出方法执行的耗时超过指定值的入参、返回值,并且参数对象的输出递归深度也被指定。下面是命令执行示例。

在这里插入图片描述

4. jad 命令

反编译指定已加载类的源码

jad {full_class_name}

{full_class_name}: 要进行反编译的类文件的全限定类名;

下面以对 Integer 类进行反编译为例。

在这里插入图片描述
在这里插入图片描述

5. sc 命令

查看 JVM 已加载的类信息

5.1 模糊搜索已加载的类

sc demo.*

模糊搜索以 demo. 为全限定类名前缀的类

执行示例:

在这里插入图片描述

5.2 输出类的详细信息

sc -d demo.MathGame

输出类demo.MathGame的详细信息。

执行示例:

在这里插入图片描述
在这里插入图片描述

5.3 输出类的详细信息

sc -d -f demo.MathGame

输出类demo.MathGame及其字段的详细信息。

执行示例如下,与不加 -f 选项相比多出来红框框住的字段信息部分。

在这里插入图片描述
在这里插入图片描述

6. redefine 命令

加载外部的 .class 文件,覆盖 JVM 已加载的类。

redefine /tmp/Animal.class

redefine 指定目录下的字节码文件

redefine 命令的限制

  • 不能新增 field/method;
  • 正在运行的方法,没有退出的话,运行该命令不会生效;

7. 使用 Arthas 定位 CPU 飚高问题

  • 先使用 dashboard 命令查看服务大概状况:

在这里插入图片描述

  • 使用 thread -n 2 命令查看耗CPU 最多的2个线程,可以看到第一个线程的CPU 使用率就达到了 98%。从下图该线程栈可以看出,造成使用率这么高的源码文件路径为:com.fuyou.arthaspractice.Application。

在这里插入图片描述

  • 使用 jad 命令对该文件进行反编译。从截图可以看出,这个文件是服务的启动类,其逻辑也非常简单,就是实现了一个死循环,不断地输出“Do Nothing.”。

在这里插入图片描述
在这里插入图片描述

  • 使用 jad --source-only 命令获取该类源码。

在这里插入图片描述

  • 使用 vim 修改定位到的BUG,此处在循环内加入sleep函数,每执行一次,sleep 3秒。

在这里插入图片描述

  • 使用 mc 命令对该源文件重新编译。mc 命令的执行经常会出现问题,此时可将源文件本地编译之后再上传。
    mc /root/Application.java -d /root/

在这里插入图片描述

  • 将编译好的字节码文件使用 redefine 命令重新加载到内存:

在这里插入图片描述

ps:因为使用 redefine 命令重新加载字节码对正在运行的方法无法生效,使用该示例演示不太合适,仅起演示作用。

arthas使用指南保姆级教程 arthas 保姆级教程 阅读详情

相关推荐

Arthas实战:线上问题诊断神器

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

weixin_42710740的博客 1361

Arthas(阿尔萨斯)使用

Arthas(阿尔萨斯)使用 1、背景 2、Arthas 介绍 3、Arthas 使用场景 4、 Arthas 如何使用 4.1 安装 4.2 demo 4.3 启动Arthas 4.4 用arthas解决常见问题 4.4.1 cpu占用过高 4.4.2 死锁 4.4.3 内存泄漏 4.5其他命令 4.5.1 help命令 4.5.2 dashboard命令 4.5.3 t

S_X007的博客 2万+

Arthas-Java诊断神器

我的Github-Java后端成长路线 https://github.com/geekibli/java-study Arthas-Java诊断神器 官方文档地址 ???? https://arthas.aliyun.com/doc/index.html# 1. 安装arthas wget https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar --target-ip 0.0.0.0 如果你的机器没有任何java进程在

IBLiplus的博客 1010

Arthas-Java应用生产可用诊断神器

如果你的程序是Java开发,有时候生产环境出现性能瓶颈或者接口访问缓慢、又或者本地环境无法进行复现,只会在线上产生bug或者问题,这时候我们需要进行在线debug排查问题。但是生产环境又不能轻易重启、或者使用传统方式轻易的debug、jmap、jstack等等进行排查,因为这些传统工具可能会导致程序业务线程暂停,产生线上事故。那么我们有什么工具能方便我们针对线上程序做调试或者定位问题吗?这个神器就是Alibaba开源的Arthas.

分享不一样的技术,与你一起共同成长! 1582

线上诊断神器-Arthas 实践

线上诊断神器 Arthas 实践

吉衣の秋先生的博客 1934

Arthas 使用详解

Arthas 使用详解

congge 1万+

阿里神器Arthas实战指南:在线诊断、性能调优、动态改代码,一篇搞定!

Arthas凭借其动态性和实时性,成为Java开发者排查线上问题的“瑞士军刀”。无论是监控方法参数、定位性能瓶颈,还是反编译代码、热修复Bug,都能大幅提升运维效率。扩展学习Arthas官方文档IDEA插件推荐:Arthas Idea(一键生成监控命令)互动话题:你在使用Arthas时遇到过哪些有趣的问题?欢迎评论区交流!💬。

qq_29083975的博客 4061

Arthas使用教程(8大分类)

1、基础命令。2、JVM相关。3、类与类加载器。4、option全局选项。5、项目中使用案例。

lydms的博客 11万+

阿里巴巴Java应用在线诊断神器Arthas工具使用介绍

引用 线上环境出现异常时,我们想立马查看下JVM内存使用情况,想看下我们的应用中的线程状态等等。那么阿里巴巴的在线诊断神器Arthas工具就是非常不错的选择,本文主要介绍Arthas的基本用法。 Arthas工具介绍 Arthas安装 常用命令 一、Arthas工具介绍 1、Arthas是什么 Arthas 是阿里巴巴开源的,基于 Greys 进行二次开发的Java应用在线诊断工具,利用Jav...

2926

阿里巴巴开源Java诊断神器Arthas实战指南

Arthas是阿里巴巴开源的一款Java诊断工具,专为解决生产环境中Java应用的疑难杂症而设计。它能够在不重启服务、不修改代码的前提下,实时监控JVM运行状态,深入分析类加载、方法调用、内存泄漏、线程阻塞等问题。相较于传统的jstackjmap等JDK自带工具,Arthas提供了更友好的交互式命令行界面,支持动态增强、运行时反编译(jad)、方法追踪(trace)和表达式计算(ognl)等高级功能,极大提升了线上问题排查效率。

weixin_34725745的博客 986

告别外置电阻!揭秘MAX22201集成电流检测的5大设计优势(附PCB布局案例)

本文深入解析MAX22201集成电流检测技术在直流有刷电机驱动中的5大设计优势,包括BOM成本降低、PCB空间优化、动态性能提升等。通过与传统方案(如DRV8871+外置电阻)的实测对比,展示其在高精度电流检测、抗干扰能力和PCB布局简化方面的突破,并附有详细的PCB布局案例和配置指南。

weixin_29189377的博客 243

使用 Arthas 调试线上 Java 应用:无需重启也能诊断问题

Arthas 是阿里巴巴开源的 Java 诊断工具,支持 JDK 6 及以上版本,可以在不重启应用的前提下,对运行中的 Java 进程进行诊断。查看线程堆栈查看类加载信息监控方法调用耗时动态修改方法返回值反编译类查看 JVM 内存状态查看方法调用链路(trace)等等Arthas 是 Java 程序员必备的线上诊断工具之一。它不仅可以帮助我们快速定位问题,还能在不重启服务的前提下进行调试和热更新,极大地提升了线上问题排查的效率。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

PX4飞控神经网络控制:从仿真到嵌入式部署实战

神经网络控制正逐步革新传统PID在无人机领域的统治地位。通过将深度学习模型部署到PX4飞控硬件,实现了从传感器数据直接生成电机指令的端到端控制。这种架构依赖TensorFlow Lite Micro等轻量级推理框架,在STM32等嵌入式处理器上可达到93μs级推理速度。关键技术突破包括:基于NVIDIA Isaac Gym的高效仿真训练、模型量化压缩技术(如8位整数量化)、以及与PX4原生安全架构的无缝集成。该方案在mRobotics Pixracer Pro等硬件上验证了可行性,为无人机姿态控制、视觉导航

weixin_30570101的博客 403

使用 Arthas 进行 Java 线上问题诊断

Arthas 是一款功能强大的 Java 诊断工具,能够在不修改代码的情况下,实时监控和诊断 Java 应用程序的运行状态。通过 Arthas,开发者可以快速定位和解决生产环境中的问题,提升问题排查的效率。本文介绍了 Arthas 的安装和常用命令,希望能够帮助读者更好地理解和使用 Arthas。

专注Java和MySQL领域知识分享 965

专栏丨华为HN8145XR光猫获取超级管理员密码

摘要:本文详细介绍了华为HN8145xr光猫获取超级管理员权限的完整步骤。首先通过ONT使能工具补全shell,然后利用Telnet登录光猫后台进行操作。文章提供了多种获取超级密码的方法,包括配置文件解密、一键查询工具等,并针对联通光猫特别说明了默认密码格式(CUAdmin+后八位数字)。此外,还介绍了恢复出厂设置、修改SSID等实用操作,帮助用户完全掌控光猫设备。文末附有详细的命令行操作指南,适合有一定技术基础的用户参考。

8259

大模型和任务型对话系统如何结合

三种方法都是基于prompt1.prompt中定义大量可分类的domain标签,每种标签含有的样例。走对话系统nlu常规步骤,domain分类,意图分类,slot提取等。缺点:需要很复杂的prompt,写的未必完善。需要多次调用llm2.prompt中定义每种query下可以调用的functioncall。3.也是基于prompt,可以管理对话主题,实现更丰富的话题流转。面向某个具体领域,没有细分的domain类别。

qq_29837229的博客 2450

Java诊断神器Arthas

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。 启动Arthas curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 命令 功能 dashboard 当前系统的实时数据面板 sc 查看JVM已加载的类信息 sm 查看已加载类的方法信息 jad 反编译指定已加载类的源码 thread 查看当前JVM的线程堆栈信息 wat.

dehuisun的专栏 1958

WOL唤醒配置(以太网、PHY、MAC)

MAC 就是以太网控制器,属于OSI的数字链路层。phy 属于OSI的物理层(Physical layer),所以叫phy。CPU Mac与phy通信通过MII接口,数据的传输通过MDIO数据线。通过配置phy的相关寄存器实现不同的功能。

qq_58264156的博客 8631

java诊断神器 arthas(阿尔萨斯)

java诊断神器 arthas(阿尔萨斯) 官网地址:https://arthas.aliyun.com/doc/en/index.html 1、快速开始 1.1、windows版本安装 # 命令行输入 curl -0 https://arthas.aliyun.com/arthas-boot.jar --output arthas-boot.jar # 启动arthas 注意:启动前已经要有java进程运行,否则无法进入 java -jar arthas-boot.jar --telnet-por

1853 1万+

如何根据芯片手册时序图编写驱动程序

如何根据芯片手册时序图编写驱动程序 对于电子开发者来说,刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。 本文根据一个简单的例子来阐述根据时序图来编写对应的程序过程。旨在讲解对于初学者应该怎么利用芯片的时序图编写符合要求的底层驱动程序(老鸟请跳过)。 下载芯片的Datasheet,(个人常用http://www.21icsearch.com/)如..

weixin_36447711的博客 1万+

使用verilog设计实现QR分解

QR(正交三角)分解法是求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量。 使用verilog对QR实现方法进行设计并进行功能仿真: 如下: 顶层模块代码: module TOP( H1R, H1I, H2R, H2I, H3R, H3I, H4R, H4I, clk, rst_n, Y1R, Y1I, Y2R, Y2I, X1R, X1I, X2R, X2I ); parameter width = 16; // I

QQ_778132974的博客 2150

深入浅出 Arthas:Java 应用诊断神器实战指南

《Arthas Java诊断工具实战指南》摘要:Arthas是阿里开源的Java诊断神器,支持在不重启应用的情况下实时监控JVM状态、追踪方法调用、分析性能瓶颈。本文系统介绍了Arthas的核心功能与实战技巧,包括安装部署、基础命令、JVM监控、类加载器操作、代码热更新等核心功能,特别详解了monitor、watch、trace等关键命令的实战用法。通过丰富的代码示例,展示了如何利用Arthas快速定位线上问题,如耗时方法分析、内存泄漏排查等场景。文章还介绍了火焰图生成等高级功能,并提供了官方文档、GitH

weixin_71604156的博客 694

OpenClaw 实战:7个真实场景的多 Agent 落地经验

《OpenClaw实战:7个真实场景的多Agent落地经验》摘要: 作者Maynor分享了从单Agent转向多Agent架构的实战经验。最初遇到的单Agent记忆混乱问题(如Flutter助手被C++话题干扰),通过拆分专项Agent(flutter-tutor/cpp-tutor等)并配置独立workspace解决。随后面临的技能调用混乱问题,采用"基础通用能力+专属能力"分层策略,通过Clawhub管理工具市场,将工具调用准确率从60%提升至95%。最后探讨多Agent协同方案,引入

Maynor的博客 1411

Java 诊断神器 Arthas

Java 诊断神器 Arthas 关于 Arthas Arthas 是一款开源在线 Java 诊断工具,采用命令行交互模式,支持 web 端在线诊断,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。得益于 Arthas 强大且丰富的功能,让 Arthas 能做的事情超乎想象。 它可以帮你解决这些问题: 1、以全局视角来查看系统的运行状况、健康状况。 2、反编译源码,查看jvm加载的是否为预期的文件内容。 3、查看某个方法的返回值,参数等等。 4、方法内调用路径及各方法调用耗时。 5、查

qq_42972134的博客 866

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Arthas,Java 应用实时诊断监控神器

这是一款阿里巴巴开源的 Java 工具,用来对运行中的程序进行实时诊断。简单用了下,马上路转粉了 安装很简单 Windows 平台,下载这个 jar 包 https://alibaba.github.io/arthas/arthas-boot.jar 非 Windows 平台 $ curl -L https://alibaba.github.io/arthas/install.sh | sh ...

不甘平庸的技术从业者 963

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Arthas在线java进程诊断工具 在线调试神器

Arthas在线java进程诊断工具 在线调试神器 tag: java 诊断 堆栈 在线调试 耗时 死锁 arthas 阿里巴巴 Arthas 是 Alibaba 开源的Java诊断工具,深受开发者喜爱。 官网文档:https://arthas.aliyun.com/doc/ 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在.

爱是与世界平行 3555

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Java Bug 定位排查工具—— JDK 内置工具
下一篇: 【消息队列】RocketMQ架构及其可用性保证
伏游
博客等级 码龄9年 369粉丝 37原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值