searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Arthas:一种快速定位、解决线上问题的Java工具

2023-07-26 01:56:46
44
0

1. 什么是Arthas

Arthas是一款阿里开源的Java诊断工具,它可以在不修改代码的情况下,实时观察和修改Java应用程序的运行状态。Arthas支持命令行操作和图形化界面操作,可以帮助开发人员快速定位和解决线上问题。

2. Arthas能做什么

Arthas提供了丰富的功能,包括但不限于以下几个方面:

  • 实时诊断:实时观察Java应用程序的运行状态,包括线程、类加载器、JVM参数、系统属性等信息,并且可对这些信息进行修改。
  • 方法追踪:对Java应用程序的方法进行追踪,并且可以查看方法的参数、返回值、异常信息等。
  • 热更新:   对Java应用程序的类进行热更新,即在不重启应用程序的情况下,替换已经加载的类。
  • 堆转储:   对Java应用程序的堆进行转储,并且可以查看堆中对象的详细信息。
  • 调试:       对Java应用程序进行调试,并且可以查看调试信息、修改变量值等。

3. Arthas的watch命令分析

在实际生产中,最常用的命令就是watch,希望通过以下示例,能够帮助读者快速上手arthas,并在实际生产中体会到arthas的好用、强大。如需参考Arthas的下载、安装、连接Java进程等操作请移步这里

作用:追踪方法入参,返回值,异常状态

格式:watch  全路径类名  方法名 [可选参数]


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,returnObj}" -n 1 -x 2 -b -s

解释:1. {params,returnObj,throwExp}: ognl表达式,表示观察指定入参和返回值

          2. -n 1: 限定捕捉次数为1次

          3. -x 2: 输出结果的遍历深度,因为结果可能是List

          4. -b -s: 分别观察方法进入前、后的参数变化情况,不指定默认观察方法退出后


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,throwExp}" -e

解释:1. -e:表示观察方法异常之后参数及异常情况


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,returnObj}" "#cost>1000" -x 3 

解释:1. #cost>1000:按耗时大于1000毫秒进行过滤


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,returnObj}" 'params[0] == "test"'

解释:1. params[0] == "test": 按指定条件过滤

4. Arthas的其他常用命令

  • dashboard:查看应用程序的概要信息
  • help:查看帮助信息
  • thread:查看线程信息
  • jvm:查看JVM信息
  • classloader:查看类加载器信息
  • method:查看方法信息
  • watch:监控方法调用
  • trace:追踪方法调用
  • jad:反编译类文件
  • heapdump:转储堆信息

5. 总结

Arthas是一款非常强大的Java诊断工具,它可以帮助开发人员快速定位和解决线上问题。通过本文的介绍,相信读者已经对Arthas有了初步的了解,并且可以开始使用它来提高自己的开发效率。最后,Idea插件仓库中已经上线arthas插件,如果读者嫌arthas预发不够简单,可以尝试上手该插件,通过可视化操作获取对应命令并在arthas中执行。

参考链接

  1. Arthas官方手册
  2. 谈谈阿里arthas背后的原理
0条评论
作者已关闭评论
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
原创

Arthas:一种快速定位、解决线上问题的Java工具

2023-07-26 01:56:46
44
0

1. 什么是Arthas

Arthas是一款阿里开源的Java诊断工具,它可以在不修改代码的情况下,实时观察和修改Java应用程序的运行状态。Arthas支持命令行操作和图形化界面操作,可以帮助开发人员快速定位和解决线上问题。

2. Arthas能做什么

Arthas提供了丰富的功能,包括但不限于以下几个方面:

  • 实时诊断:实时观察Java应用程序的运行状态,包括线程、类加载器、JVM参数、系统属性等信息,并且可对这些信息进行修改。
  • 方法追踪:对Java应用程序的方法进行追踪,并且可以查看方法的参数、返回值、异常信息等。
  • 热更新:   对Java应用程序的类进行热更新,即在不重启应用程序的情况下,替换已经加载的类。
  • 堆转储:   对Java应用程序的堆进行转储,并且可以查看堆中对象的详细信息。
  • 调试:       对Java应用程序进行调试,并且可以查看调试信息、修改变量值等。

3. Arthas的watch命令分析

在实际生产中,最常用的命令就是watch,希望通过以下示例,能够帮助读者快速上手arthas,并在实际生产中体会到arthas的好用、强大。如需参考Arthas的下载、安装、连接Java进程等操作请移步这里

作用:追踪方法入参,返回值,异常状态

格式:watch  全路径类名  方法名 [可选参数]


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,returnObj}" -n 1 -x 2 -b -s

解释:1. {params,returnObj,throwExp}: ognl表达式,表示观察指定入参和返回值

          2. -n 1: 限定捕捉次数为1次

          3. -x 2: 输出结果的遍历深度,因为结果可能是List

          4. -b -s: 分别观察方法进入前、后的参数变化情况,不指定默认观察方法退出后


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,throwExp}" -e

解释:1. -e:表示观察方法异常之后参数及异常情况


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,returnObj}" "#cost>1000" -x 3 

解释:1. #cost>1000:按耗时大于1000毫秒进行过滤


命令:watch  com.org.demo.controller.userController  getUserInfo "{params,returnObj}" 'params[0] == "test"'

解释:1. params[0] == "test": 按指定条件过滤

4. Arthas的其他常用命令

  • dashboard:查看应用程序的概要信息
  • help:查看帮助信息
  • thread:查看线程信息
  • jvm:查看JVM信息
  • classloader:查看类加载器信息
  • method:查看方法信息
  • watch:监控方法调用
  • trace:追踪方法调用
  • jad:反编译类文件
  • heapdump:转储堆信息

5. 总结

Arthas是一款非常强大的Java诊断工具,它可以帮助开发人员快速定位和解决线上问题。通过本文的介绍,相信读者已经对Arthas有了初步的了解,并且可以开始使用它来提高自己的开发效率。最后,Idea插件仓库中已经上线arthas插件,如果读者嫌arthas预发不够简单,可以尝试上手该插件,通过可视化操作获取对应命令并在arthas中执行。

参考链接

  1. Arthas官方手册
  2. 谈谈阿里arthas背后的原理
文章来自个人专栏
开发工具
2 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0