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

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

这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

是否有一个全局视角来查看系统的运行状况?

有什么办法可以监控到JVM的实时运行状态?

怎么快速定位应用的热点,生成火焰图?

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进程

20200508171542711omku0sigpu0aenw_0.png

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

20200508171542711omku0sigpu0aenw_1.png当我们进入这个界面之后,想了解我们的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方法内部调用路径,并输出方法路径上的每个节点上耗时

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐