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

HelloWorld搬运工      2022-05-07     713

关键词:

早就听闻阿里开源的 Arthas 在做 Java 应用诊断上十分牛逼,身边也有很多同事在使用,因此决定开一个坑,自己从零学习下这个工具的使用,本系列使用的版本是当前最新版 3.4.5。

由于 Arthas 经过这么长时间的发展,本身文档、在线教程已经十分健全了,同时还有第三方的 IDEA 插件、许多教学视频去帮助我们入门使用,因此这个系列的文章定位是个人笔记,而并非教程,希望不要误人子弟。

概述

https://arthas.aliyun.com

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

  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

  • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

  • 是否有一个全局视角来查看系统的运行状况?

  • 有什么办法可以监控到JVM的实时运行状态?

  • 怎么快速定位应用的热点,生成火焰图?

使用 Arthas 需要 JDK 版本在 1.6 以上。

快速安装

https://arthas.aliyun.com/doc/install-detail.html

Arthas 本身也是个 Java 进程,得益于 Java 跨平台特性,所以我就直接在 Windows 上安装了。

(1)下载 Arthas 包

curl -O https://arthas.aliyun.com/arthas-boot.jar

(2)运行 Arthas

java -jar arthas-boot.jar

需要注意的是运行 Arthas 前至少保证系统正在运行一个 Java 进程,否则无法启动,并会报错:Can not find java process. Try to pass in command line.Please select an available pid。解决办法就是跑一个 Java 应用即可。

如果需要卸载 Arthas 的话:

在 Linux/Unix/Mac 平台,删除下面文件:

rm -rf ~/.arthas/
rm -rf ~/logs/arthas

Windows平台直接删除user home下面的.arthas和logs/arthas目录

快速入门

4.1 attach 进程

这里我们使用 Arthas 官方提供的 demo 包,这样我们就不需要自己编写代码了。将 demo 包下载下来并运行。

curl -O https://arthas.aliyun.com/arthas-demo.jar
java -jar arthas-demo.jar

这个 demo 功能是死循环做质因数分解,并记录下无法分解的次数,如下图所示。

我们首先启动 Arthas 并 attach 上该进程。

默认情况下,Arthas只listen 127.0.0.1,所以如果想从远程连接,则可以使用 --target-ip参数指定 listen 的IP

另外如果条件允许的话,在 attach 后也可以使用浏览器登录,访问:http://127.0.0.1:3658 即可。也可以填入 IP,远程连接其他机器的 Arthas。

4.2 常用命令

4.2.1 dashboard

https://arthas.aliyun.com/doc/dashboard.html

使用 dastboard 命令可以查看 Java 进程信息(定时刷新),如需退出使用 q 即可。它由如下四个部分组成:

  • 第一部分是显示JVM中运行的所有线程:所在线程组,优先级,线程的状态,CPU的占用率,是否是后台进程等

  • 第二部分显示的JVM内存的使用情况

  • 第三部分显示的是 GC 相关的信息

  • 第四部分是操作系统的一些信息和Java版本号

4.2.2 thread

https://arthas.aliyun.com/doc/thread.html

使用 thread 命令可以查看当前所有的线程信息。

并且可以通过追加 PID 的方式,查看具体某个线程的状态。

4.2.3 jad

https://arthas.aliyun.com/doc/jad.html

使用 jad 命令可以反编译 class 文件。

4.2.2 watch

https://arthas.aliyun.com/doc/watch.html

watch 命令可以监控方法的入参出参:

退出 Arthas

如果只是退出当前的连接,可以用quit或者exit命令。Attach到目标进程上的 Arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。

如果想完全退出arthas,可以执行stop命令。

java生产环境调试问题排查神器arthas(阿里中台开源的)

java生产环境调试、问题排查神器arthas(阿里出的)Arthas是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、... 查看详情

java在线诊断利器之arthas

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

阿里java诊断工具arthas-排查线上环境内存使用过大线程cpu使用率高问题(代码片段)

一、arthas上篇文章对arthas的安装以及指令做了展示,可以感觉出arthas提供的指令还是挺多的,上篇文章没有对指令进行过多的演示,目的是大家在学习arthas后,就可以在上篇文章或者官方文档中统一查找定位使用... 查看详情

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

写在前面:最近备战双十一,手边的事情太多,没时间定期更新,望大家见谅~明天就是1024程序员节了,分享一篇关于如何使用Arthas诊断工具,快速定位工作中遇到的线上问题。一、什么是Arthas?A... 查看详情

arthas使用教程阿里巴巴开源项目史上最强java线上诊断工具(代码片段)

什么是Arthas摘录一段官方Github上的简介Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个jar包加载的?为什么会报各种类相关的Exception&#... 查看详情

arthas使用教程阿里巴巴开源项目史上最强java线上诊断工具(代码片段)

什么是Arthas摘录一段官方Github上的简介Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个jar包加载的?为什么会报各种类相关的Exception&#... 查看详情

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

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

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

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

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

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

初识阿里开源诊断工具arthas

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

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

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

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

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

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

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

更效率、更优雅阿里巴巴开发者工具不完全盘点

...,技术演进的历程中,伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率... 查看详情

一文带你快速了解java线上问题快速诊断神器arthas(代码片段)

...thasArthas是Alibaba开源的一款Java诊断工具,能够查看Java应用的线程状态、JVM信息等,支持在线对业务问题诊 查看详情

整个阿里都在用的线上问题分析诊断神器arthas(阿尔萨斯),确定不来看一下?(代码片段)

1、Arathas介绍官方文档:https://arthas.aliyun.com/doc/GitHub地址:https://github.com/alibaba/arthasArthas是一款开源在线java诊断工具,采用命令行交互模式,支持web端在线诊断。Arthas可以进行方法粒度(包括private方法)... 查看详情

arthas,7000字入门篇

...:下创建Arthas目录,在windows命令窗口下,使用curl命令下载阿里服务器上的jar包,大小138k。2、使用java启动arthas-boot.jar,来安装arthas,大小约10M。运行此命令会发现java进程,输入1按回车。则自动从远程主机上下载Arthas到本地目录... 查看详情

一文带你快速了解java线上问题快速诊断神器arthas(代码片段)

文章目录一、什么是Arthas二、特性一览三、Arthas能为你做什么?四、快速安装1、前提条件2、一键安装五、快速使用1、启动脚本并连接进程2、启动jar包并连接进程六、使用示例1、dashboard(当前系统的实时数据面板)2... 查看详情