文章目录

  • 前言
  • 一、Arthas是什么?
  • 二、快速入门
  • 1.下载
  • 2.如何运行
  • 三、常用命令
  • 1.dashboard
  • 2.trace
  • 总结



前言

最近公司项目版本迭代升级,在开发新需求导致没什么时间写博客。

在开发需求的过程中,我写了一个接口,去批量调内部已经写好的接口遇到了几个问题,一是fegion远程调用的问题,二是这个接口最大批量次数限制下去跑这个接口,竟然耗时25-30秒,就要去分析是哪个方法耗时这么久,于是便学会去使用arthas这个工具。
参考arthas在线文档,这个文档其实写的很详细,本文主要讲讲怎么入门,以及常用的几个命令。


java线上排查问题 java线上排查工具_java线上排查问题

一、Arthas是什么?

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到 JVM 的实时运行状态?
  7. 怎么快速定位应用的热点,生成火焰图?
  8. 怎样直接从 JVM 内查找某个类的实例?

二、快速入门

1.下载

首先去上文的在线文档中下载,打开目录如下图:

java线上排查问题 java线上排查工具_jvm_02


我们可以用两种方式启动,分别是运行下面的as.sh脚本,或者java -jar arthas-boot.jar这个jar包启动,我在windows环境下进行演示,就用后面这种方式启动,前提是你已经配置Java的环境变量。

2.如何运行

  1. 先在本地启动一个项目,要一直运行的,我就先启动一个springboot项目。

    2.进入刚刚下载的arthas目录,cmd打开,运行java -jar arthas-boot.jar

    3.我们输入4去连接监听我们刚刚启动的项目,出现下面界面表示运行成功:

三、常用命令

1.dashboard

当前系统的实时数据面板

java线上排查问题 java线上排查工具_jvm_03

2.trace

方法内部调用路径,并输出方法路径上的每个节点上耗时。

比如我想要知道我当前这个controller里get方法的耗时,如下图:

java线上排查问题 java线上排查工具_java_04


在arthas面板输入下面这个命令,trace com.example.reflect.controller.TestController get,表示当前正在监听这个方法,如下图:

java线上排查问题 java线上排查工具_java线上排查问题_05


我们就去浏览器上调用一下这个方法,就会有数据展示:

java线上排查问题 java线上排查工具_jar_06


arthas就会分析这个方法

java线上排查问题 java线上排查工具_java_07


这个命令非常有用,还有很多用法,大家可以去在线文档查看。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了arthas的使用,而arthas提供了大量能使我们快速便捷排查线上问题的方法。

学习记录,不断沉淀,终究会成为一个优秀的程序员,加油!