阿里开源的Java诊断工具Arthas(阿尔萨斯)

作为大自然搬运工,只是为了帮助大家扩展视野.有兴趣建议直奔官网.

官网       下载

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

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

Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

快速安装启动:

curl -O https://alibaba.github.io/arthas/arthas-boot.jar

java -jar arthas-boot.jar

打印帮助参数

java -jar arthas-boot.jar -h

Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

curl -L https://alibaba.github.io/arthas/install.sh | sh

上述命令会下载启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。直接在shell下面执行./as.sh,就会进入交互界面。

以Java Agent的方式启动

下载全量的arthas zip包,解压之后以 -javaagent 的参数指定arthas-agent.jar来启动:

java -javaagent:/tmp/test/arthas-agent.jar -jar arthas-demo.jar

Windows下安装使用

arthas\arthas-packaging-3.1.4-bin\  下面有一个arthas-boot.jar包    

执行 (需要保证执行该程序的用户需要和目标进程具有相同权限)java -jar arthas-boot.jar  

命令行会找到本机所有正在运行的Java进程并编号输入编号进入相应的Java进程

 阿里提供了比较友好的WebConsole,可以在浏览器输入127.0.0.1:8563 进行访问

当我们进入这个界面之后,想了解我们的JAVA进程内部的任何信息,都可以找到相关命令去获取信息,每个命令后都可加相关参数去查询更精准的所需信息

dashboard   当前系统的实时数据面板,按 ctrl+c 退出。

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

jvm       查看当前JVM信息

sysprop     查看当前JVM的系统属性(System Property)

sysenv    查看当前JVM的环境属性(System Environment Variables)

vmoption      查看,更新VM诊断相关的参数

perfcounter  查看当前JVM的 Perf Counter信息

sc         查看JVM已加载类信息

sm          查看已加载类的方法信息

jad          反编译指定已加载类的源码

watch     让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值抛出异常入参,通过编写 OGNL 表达式进行对应变量的查看

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

命令还有很多,这里就不一一列举,此处仅为抛砖引玉,欲知更多相关内容,请再次奔向官网,官网也有中文文档,对于国人开发者也比较友好

 

posted @ 2020-05-08 17:08  蚂蚁style  阅读(4506)  评论(0编辑  收藏  举报