本文适合有 Java 基础知识的人群。
HelloGitHub 推出的《讲解开源项目》[1]系列,今天给大家带来一款阿里开源的 Java 诊断利器 Arthas 项目—— Arthas[2]
项目源码地址:
https://github.com/alibaba/arthas
一、简介
为什么要用 Arthas?好多 Java 开发的小伙伴可能有遇到下面这些问题:
- 项目中导入了一个 jar 包的不同版本,那么这个类从哪个 jar 包加载的?线上环境为什么会报各种异常?
- 本地项目运行没问题,线上环境运行的结果为什么和本地不同?数据原因没有执行到?代码没有 commit?环境上使用的分支搞不对?
- 线上环境遇到偶先问题,难道只能通过加日志,调整项目日志级别,重新打包发布验证问题吗?
- 线上环境遇到某个用户的审批流程走的不对,线下环境无法重现,怎么在线上进行远程调试呢?
- 有没有一个监控系统的运行整体状况的功能?
- JDK 自带了一些监控工具,本地可动态监控 JVM 运行状态,那么线上环境有什么办法可以监控到 JVM 的实时运行状态?
- 在线上环境怎么快速定位应用的热点,生成火焰图?
1.1 实现原理
整体宏观模块调用图如下:
1.2 主要功能
Arthas 提供的功能主要可以分为以下三个方面: