工具推荐篇在线诊断工具arthas应用

Herman-Hong Herman-Hong     2023-04-01     808

关键词:

一、背景

应用Arthas始于一次运行环境问题诊断,由于本地无法复现问题,因此需要在线上调试,通常的方法是加log,重新打包部署,复现问题,但是过程太过复杂,因此接触到了Arthas,也要感谢团队成员的贡献。

二、Arthas是什么

这个官网都有很详细的介绍https://alibaba.github.io/arthas/https://github.com/alibaba/arthas

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

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

Arthas现在已更新到3.1.0版本,还在不断完善更新,完全开源(以后是技术大融合时代,要关注开源社区,拥抱开源技术,共同合作,共同进步)。支持WebConsole和命令自动补全。

三、Arthas应用

四、Arthas内部原理

主要基于Java的Instrumentation实现的。

利用 Java 代码,即 java.lang.instrument 做动态 Instrumentation 是 Java SE 5 的新特性,它把 Java 的 instrument 功能从本地代码中解放出来,使之可以用 Java 代码的方式解决问题。使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。有了这样的功能,开发者就可以实现更为灵活的运行时虚拟机监控和 Java 类操作了,这样的特性实际上提供了一种虚拟机级别支持的 AOP 实现方式,使得开发者无需对 JDK 做任何升级和改动,就可以实现某些 AOP 的功能了。

在 Java SE 6 里面,instrumentation 包被赋予了更强大的功能:启动后的 instrument、本地代码(native code)instrument,以及动态改变 classpath 等等。这些改变,意味着 Java 具有了更强的动态控制、解释能力,它使得 Java 语言变得更加灵活多变。

在 Java SE6 里面,最大的改变使运行时的 Instrumentation 成为可能。在 Java SE 5 中,Instrument 要求在运行前利用命令行参数或者系统参数来设置代理类,在实际的运行之中,虚拟机在初始化之时(在绝大多数的 Java 类库被载入之前),instrumentation 的设置已经启动,并在虚拟机中设置了回调函数,检测特定类的加载情况,并完成实际工作。但是在实际的很多的情况下,我们没有办法在虚拟机启动之时就为其设定代理,这样实际上限制了 instrument 的应用。而 Java SE 6 的新特性改变了这种情况,通过 Java Tool API 中的 attach 方式,我们可以很方便地在运行过程中动态地设置加载代理类,以达到 instrumentation 的目的。

另外,对 native 的 Instrumentation 也是 Java SE 6 的一个崭新的功能,这使以前无法完成的功能 —— 对 native 接口的 instrumentation 可以在 Java SE 6 中,通过一个或者一系列的 prefix 添加而得以完成。

最后,Java SE 6 里的 Instrumentation 也增加了动态添加 class path 的功能。所有这些新的功能,都使得 instrument 包的功能更加丰富,从而使 Java 语言本身更加强大。

arthas在线java进程诊断工具在线调试神器(代码片段)

Arthas在线java进程诊断工具在线调试神器tag:java诊断堆栈在线调试耗时死锁arthas阿里巴巴Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。官网文档:https://arthas.aliyun.com/doc/当你遇到以下类似问题而束手无策时,Arthas... 查看详情

使用在线诊断工具arthas

参考技术A服务器线上排查bug是一件非常困难的事情。arthas为我们提供了线上诊断的十八般兵器。非常好用。本文将根据官方文档展示如何安装和简单使用arthas。arthas的命令很多,谁费那劲去记忆。最好的方式就是想用随手查阅... 查看详情

java诊断工具arthas-基本概念和常见命令(代码片段)

...要一个诊断利器来排查问题。Arthas是阿里开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补... 查看详情

java在线诊断利器之arthas

一.简介Arthas是阿里在2019年9月份开源的一款java在线诊断工具,能够分析、诊断、定位java应用问题,例如:JVM信息、线程信息、搜索类中的方法、跟踪代码执行、观测方法的入参和返回参数等等。Arthas最大的特点是能在不修改代... 查看详情

java应用线上问题诊断工具alibabaarthas(代码片段)

...就是1024程序员节了,分享一篇关于如何使用Arthas诊断工具,快速定位工作中遇到的线上问题。一、什么是Arthas?Arthas是Alibaba开源的Java诊断工具。当我们面对线上问题束手无策时, 查看详情

arthasalibaba开源java诊断工具

...尔萨斯)能为你做什么?Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个jar包加载的?为什么会报各种类相关的Exception?我改的代码为什么没有... 查看详情

alibabajava诊断工具arthas之快速安装和简单使用(代码片段)

AlibabaJava诊断工具Arthas简单介绍:当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:1.这个类从哪个jar包加载的?为什么会报各种类相关的Exception?2.我改的代码为什么没有执行到?难道是我没commit?分支搞错了?3.遇到... 查看详情

阿里arthas在做java应用诊断上应用

...使用,因此决定开一个坑,自己从零学习下这个工具的使用,本系列使用的版本是当前最新版3.4.5。由于Arthas经过这么长时间的发展,本身文档、在线教程已经十分健全了,同时还有第三方的IDEA插件、许多教... 查看详情

flink使用arthas在线诊断flink的那些事(代码片段)

...#xff1a;使用arthas在线诊断flink的那些事最近在使用arthas诊断工具,诊断java服务的一些问题,突然想到能不能使用arthas诊断flink的jobManager和taskManager呢?答案是可以的.采用javaagent,在flink启动jobmanager和taskManager的时候,注入我们的agent官方... 查看详情

jvm调优--04---dump文件分析arthas在线排查工具

...堆转储快照1.dump文件内容2.获取dump文件的方法指令jvisualvm工具3.dump文件分析工具3.1jhat命令3.2使用jvisualvm工具3.3使用MAT工具arthas在线排查工具官网https://arthas.aliyun.com/doc/在线排查工具----arthas启动:arthas常用命令dump文件java堆转储快... 查看详情

阿里巴巴arthas诊断工具使用介绍(代码片段)

  阿里推出的arthas诊断工具,是专门针对Java程序出现内存泄漏,CPU使用过高,线上问题运行错误进行诊断的工具。它的运行很简单,只需要下载一个arthas-boot.jar的工具包,然后通过java-jararthas-boot.jar运行即可... 查看详情

带着8个问题5分钟教你学会arthas诊断工具(代码片段)

...ps://www.xttblog.com/?p=5247前言Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下 查看详情

带着8个问题5分钟教你学会arthas诊断工具(代码片段)

...ps://www.xttblog.com/?p=5247前言Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下 查看详情

arthas(阿尔萨斯)-java诊断工具-----来源于网络(代码片段)

...mlArthas是什么鬼?Arthas是一款阿里巴巴开源的Java线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题。Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux、Mac、Windows操作系统,命令还支持使用 tab 键对各... 查看详情

初识阿里开源诊断工具arthas

上个月,阿里开源了一个名为Arthas的监控工具。恰逢近期自己在写多线程处理业务,由此想到了一个问题。如果在本机开发调试,IDE可以看到当前的活动线程,例如IntelliJIDEA,线程是运行还是休眠,在Debugger→Threads可以看到。倘... 查看详情

阿里java诊断工具arthas-生产环境反编译动态修改程序调试应用(代码片段)

阿里Java诊断工具arthas-生产环境反编译动态修改程序调试应用一、arthas上篇文章我们借助arthas监测线上系统的运行信息、排查程序运行缓慢问题,尽管这样已经非常好了,但是还是会有些问题,有时我们可能还需要查... 查看详情

java诊断工具arthas-实操案例(代码片段)

@[toc]实操案例排查函数调用异常通过curl请求接口只能看到返回异常,但是看不到具体的请求参数和堆栈信息。shell@Alicloud:~$curlhttp://localhost:61000/user/0"timestamp":1655435063042,"status":500,"error":"InternalServerError","exception":"java.lang.Ill 查看详情

java培训讲师工资

什么是Arthas?Arthas是一款开源在线诊断工具,采用命令行交互模式,支持web端在线诊断,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和诊断。这是一款开源一年多GitHubstar2万,99%的阿里研... 查看详情