阿里巴巴Java应用在线诊断神器Arthas工具使用介绍

简介: 线上环境出现异常时,我们想立马查看下JVM内存使用情况,想看下我们的应用中的线程状态等等。那么阿里巴巴的在线诊断神器Arthas工具就是非常不错的选择,本文主要介绍Arthas的基本用法。Arthas工具介绍Arthas安装常用命令

引用

线上环境出现异常时,我们想立马查看下JVM内存使用情况,想看下我们的应用中的线程状态等等。那么阿里巴巴的在线诊断神器Arthas工具就是非常不错的选择,本文主要介绍Arthas的基本用法。

  • Arthas工具介绍
  • Arthas安装
  • 常用命令

一、Arthas工具介绍

1、Arthas是什么

Arthas 是阿里巴巴开源的,基于 Greys 进行二次开发的Java应用在线诊断工具,利用Java6的Instrumentation特性,动态增强你所指定的类,获取你想要到的信息, 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,让我们在定位、分析诊断问题时如有神助。


2、Arthas能帮我们解决什么问题

  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception
  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  • 是否有一个全局视角来查看系统的运行状况?
  • 有什么办法可以监控到JVM的实时运行状态?

二、Arthas安装

1、下载

Arthas下载http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=com.taobao.arthas&a=arthas-packaging&e=zip&c=bin&v=LATEST

下载后解压如下图所示:

image.png

2、启动

通过java -jar arthas-boot.jar启动我们的神器Arthas,启动后会展示系统中的Java应用以及其对应的PID信息,如下所示:

image.png

我们想要查看PID为14405的进程信息,则输入前面的序号1,如下所示:

image.png

输入thread,查看对应线程的详细信息。

image.png

三、常用命令

1、基础命令

help——查看命令帮助信息

cat——打印文件内容,和linux里的cat命令类似

pwd——返回当前的工作目录,和linux命令类似

cls——清空当前屏幕区域

session——查看当前会话的信息

reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类

version——输出当前目标 Java 进程所加载的 Arthas 版本号

history——打印命令历史

quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响

shutdown——关闭 Arthas 服务端,所有 Arthas 客户端全部退出

keymap——Arthas快捷键列表及自定义快捷键


2、jvm相关

dashboard——当前系统的实时数据面板

thread——查看当前 JVM 的线程堆栈信息

jvm——查看当前 JVM 的信息

sysprop——查看和修改JVM的系统属性

sysenv——查看JVM的环境变量

getstatic——查看类的静态属性

New! ognl——执行ognl表达式

New! mbean——查看 Mbean 的信息


3、options

options——查看或设置Arthas全局开关


4、管道

Arthas支持使用管道对上述命令的结果进行进一步的处理,如sm java.lang.String * | grep ‘index’


grep——搜索满足条件的结果

plaintext——将命令的结果去除ANSI颜色

wc——按行统计输出结果


相关文章
|
4天前
|
Java
探索Java世界的奇妙工具——运算符与表达式运算符
探索Java世界的奇妙工具——运算符与表达式运算符
5 0
|
12天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
26 3
|
2天前
|
Java 编译器 开发者
Java一分钟之-Java注解的理解与应用
【5月更文挑战第12天】本文介绍了Java注解的基础知识和常见应用,包括定义、应用和解析注解。注解在编译检查、框架集成和代码生成等方面发挥重要作用。文章讨论了两个易错点:混淆保留策略和注解参数类型限制,并提供了避免策略。提醒开发者避免过度使用注解,以保持代码清晰。理解并恰当使用注解能提升代码质量。
12 3
|
2天前
|
Java API 开发者
Java中Lambda表达式的深入理解与应用
【5月更文挑战第12天】在Java 8之后,Lambda表达式已经成为了Java开发者必备的技能之一。Lambda表达式以其简洁、灵活的特点,大大提高了编程的效率。本文将深入探讨Lambda表达式的基本概念,语法规则,以及在实际开发中的应用,帮助读者更好地理解和使用Lambda表达式。
|
5天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
21 0
|
6天前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
10 0
|
6天前
|
分布式计算 负载均衡 Java
构建高可用性Java应用:介绍分布式系统设计与开发
构建高可用性Java应用:介绍分布式系统设计与开发
10 0
|
6天前
|
设计模式 算法 Java
设计模式在Java开发中的应用
设计模式在Java开发中的应用
16 0
|
6天前
|
监控 Java Maven
揭秘Java Agent技术:解锁Java工具开发的新境界
作为JDK提供的关键机制,Java Agent技术不仅为Java工具的开发者提供了一个强大的框架,还为性能监控、故障诊断和动态代码修改等领域带来了革命性的变革。本文旨在全面解析Java Agent技术的应用场景以及实现方式,特别是静态加载模式和动态加载模式这两种关键模式。
34 0
|
7天前
|
分布式计算 Java 大数据
Java语言主要应用领域
【5月更文挑战第7天】Java在嵌入式系统中以低至130KB的占用展现可靠性,实现“一次编写,到处运行”。在大数据领域,Java通过Hadoop、Hbase、Accumulo和ElasticSearch等工具发挥关键作用。Java也是Eclipse、IntelliJ IDEA和NetBeans等开发工具的基础。广泛应用于电商网站和金融服务器系统,即便在J2ME式微后,仍能在部分低端手机中找到其踪影。
18 4