Arthas是诊断Java领域线上问题的利器,利用字节码增强技术,可以在不重启JVM进程的情况下,查看程序的运行情况。
前提条件
说明 仅应用监控专家版支持Arthas诊断功能。
- 新开通ARMS的账号或15天内未使用旧版Arthas诊断功能的账号仅支持使用新版Arthas诊断功能。
如果您在使用Arthas诊断中有任何问题,请搜索钉钉群号35396829进入ARMS应用诊断答疑群获取帮助。
- ARMS Agent版本为v2.7.1.3或以上。
- 已接入应用监控。具体操作,请参见应用监控概述。
- 应用的编程语言需要为Java。
- 3658端口未被占用。
背景信息
ARMS提供的Arthas诊断功能主要用于补齐ARMS在实时诊断方面的能力。ARMS的Arthas诊断功能包括以下几种类型:
- JVM概览:查看当前JVM进程实时的内存使用情况、系统信息、系统变量和环境变量。
- 线程分析:查看当前JVM进程的线程耗时情况以及指定线程的实时方法栈。
- 方法执行分析:抓取任意方法(非JDK方法)满足指定条件的一次执行记录,记录该方法的参数、异常、返回值以及方法内部各个方法执行耗时。
- 对象查看器:查看任意类的某个实例实时的属性取值情况。
- 实时看板:常见组件的实时看板,例如,Druid连接池的实时看板可以看到连接池的配置、使用情况以及SQL执行耗时情况。
- 性能分析:对CPU耗时、内存分配等对象进行一定时间的采样并生成相应的火焰图。
- Arthas Shell:通过命令行方式使用Arthas诊断。
开通Arthas诊断功能
查看Arthas诊断信息
- 登录ARMS控制台。
- 在左侧导航栏,选择 。
- 在顶部菜单栏,选择地域。
- 在应用列表页面,单击应用名称。
- 在左侧导航栏,选择 。
- 在Arthas诊断页面,在顶部下拉列表选择待诊断的应用实例。
- 若该实例的Agent版本未升级至2.7.1.3或以上,页面会提示您需要先升级Agent。
- 若该实例的Agent版本已升级至2.7.1.3或以上,页面会显示该实例的Arthas诊断信息。
JVM概览
JVM概览支持查看应用的JVM相关信息,包括JVM内存、操作系统信息、变量信息等,帮助您了解JVM的总体情况。
Arthas诊断页面默认显示JVM概览页签,您可以在JVM概览页签查看以下信息:
- JVM内存:JVM内存的相关信息,包括堆内存使用情况、非堆内存使用情况、GC情况等。
- 操作系统信息:操作系统的相关信息,包括平均负载情况,操作系统名称、操作系统版本、Java版本等。
- 变量信息:变量的相关信息,包括系统变量和环境变量。
线程耗时分析
线程耗时分析支持显示该应用的所有线程和查看线程的堆栈信息,帮助您快速定位耗时较高的线程。
方法执行分析
方法执行分析支持抓取方法的某一次执行的耗时、入参、返回值等信息和钻入,帮助您快速定位导致慢调用的根本原因,以及问题线下无法复现或日志缺失等场景。
对象查看器
对象查看器用于查看一些单例对象当前的状态,用于排查应用状态异常问题,例如应用配置、黑白名单、成员变量等。
实时看板
实时看板用于查看系统中用到的关键组件的实时状态,例如查看数据库连接池的使用情况、HTTP连接池的使用情况等,有利于排查资源类型的问题。
性能分析
性能分析支持对CPU耗时、内存分配等对象进行一定时间的采样并生成相应的火焰图,帮助您快速定位应用的性能瓶颈。
Arthas Shell
通过命令行方式自定义Arthas诊断。
