目录

1、问题

2、是什么

3、为什么要学

3.1、支持线上反编译

3.2、支持热部署

3.3、可视化监控系统运行情况、JVM的实时运行情况

3.4、快速定位热点问题,生成火焰图

4、怎么用

4.1、安装

4.2、启动

4.3、常用命令


官方教程

【需求驱动】

所有的学习从需求开始,学习任何知识要想事半功倍,一定要先搞清楚它存在的意义和价值。

1、问题

案发现场:前两天刚上线了一个新功能,由于业务相对复杂,提供的是全自动的功能,对于客户来说都是接口直接操作,一个指令来了,就要执行一系列的操作,最终给客户一个处理结果,由于流程过多,中间状态多达十几个,所以虽然测试也跑通了一个正常流程,可是上线以后,还是有很多bug。导致的结果就是刚上线就频繁的替换文件,增量发布,需要不停的重启线上服务。而在公司呢,绝大部分的开发是没有生产服务器权限的,这就导致我们不要频繁的去找有权限的领导替换文件、重启服务。 好在这是一个独立的服务,重启也不影响其他核心业务。但是这样总归是不妥的,因为有些时候服务根本就不能重启,很多业务还是跑数据呢?于是就想,如果可以热部署就好了,一查就找到了这个非常优秀的工具 Arthas[为了解决线上热部署的问题]

2、是什么

Arthas是阿里巴巴开源的一款Java诊断工具,几乎可以取代很多JDK自带的诊断工具,如:jconsole 、jvisualvm,深受开发者的喜爱。

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

3、为什么要学

3.1、支持线上反编译

其一:比如某个功能本地、测试环境都好好的,上线了突然不好用了,这个时候就很郁闷,是不是版本搞错了,或者没有commit

其二:通过动态代理生成的class,这部分代码在本地是没有的

3.2、支持热部署

线上遇到了bug,无法线上debug,难道只能通过加日志增量发版重启服务来排查吗

只有线上才有的bug,测试无法复现的bug,服务不能停。

3.3、可视化监控系统运行情况、JVM的实时运行情况

3.4、快速定位热点问题,生成火焰图

 

4、怎么用

4.1、安装

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

如下图,我把jar文件下载到了/usr/local/目录下

java 火焰图 cpu_重启

4.2、启动

如下图,启动后会显示当前java进程,输入一个前面的进程编号【1】,就可以监控程序了

java 火焰图 cpu_java 火焰图 cpu_02

4.3、常用命令

jad 反编译文件

redefine  热部署

dashboard 查看资源使用情况

jvm  查看虚拟机详情

java 火焰图 cpu_java 火焰图 cpu_03

下图