开发者学堂课程【线上问题排查利器 Alibaba Arthas(上):Arthas 概述】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/746/detail/13182
Arthus 概述
主要内容:
一、Arthus(阿尔萨斯)能做什么?
一、Arthus能做什么
上图是 Arthus 的 logo。Artuhs 是阿里巴巴开源的 java 的诊断工具,深受开发者喜爱。它在企业里面用的非常多。
一个项目做好后,尤其是 web 项目,把它部署到服务器上面,它在服务器上面运行的过程中,会出现各种各样奇怪的现象,而这些奇怪的现象或者 bug,在实际线下开发的时候发现不了,或者很难发现。所以有时就需要让这个项目在服务器上面,现场的运行环境当中去进行检测,看它到底哪些地方出了问题。这个任务就可以由Arthus 胜任。Arthus 工具在企业当中是广泛使用。
1.可以解决的问题
例如现在有一个 java 在内存当中运行,一个 web 项目里就有几十个jar包,如果要想找到某一个类,可以用 Arthus 找具体在哪个jar包。
当遇到了某一个用户,他在访问过程当中,数据处理有问题,而这种现象,只有在程序执行的过程中,在实际的应用环境中才会出现。
在线下自己开发的时候,没有办法调试,也没有办法重现。此问题也要通过Arthus去检测。
这只是它比较常见的两种应用方式。除此之外,七点常见的问题。
当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
3.遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?
4.线上遇到某个用户的数据处理有问题,但线上同样无法debug,线下无法重现!
5.是否有一个全局视角来查看系统的运行状况?
6.有什么办法可以监控到 JVM 的实时运行状态?
7.怎么快速定位应用的热点,生成火焰图?
举例问题:能不能通过一个全局的视角来查看系统的运行状态呢?或者有没有办法看到整个Java虚拟器它实时运行的状态呢?能不能生成检测的火焰图呢?
有了Arthus这个工具就可以解决这些问题。阿里巴巴是非常有名的一个企业,它现在也做了越来越多的免费开源的诊断工具,Arthus就是其中之一。
2.Arthus 运行要求
首先,它必须要运行在 JDK6+以上的版本。现在这个版本算是非常普遍的一个版本。因为是用 java 编写的,所以它运行在Java虚拟机里面,跨平台使用,并且支持Linus/Mac/Windows 系统。下面会介绍到 Linus 和 windows。
主要的应用都在Linux系统里面,因为java开发好了以后,它运行的环境在 Linux里面会比较稳定。
所以后面的课程都是在Linus下面操作。它没有很漂亮的界面,就是一个命令行方式的交互模式,这样可以学到不少命令,也有不少命令和Linux的命令类似。
如果熟悉 Linus 操作那么 Arthus 上手是非常容易的一件事情。同时它也提供了一些像Linus一样自动补全的功能,可以进一步方便进行一些问题的诊断和判断。
以上就是Arthus的一些介绍。