JVM

阿里Arthas的使用

过去的,未来的
2020-07-28 / 0 评论 / 0 点赞 / 995 阅读 / 1,894 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2020-09-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。

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

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

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

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

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

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

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

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

1、安装与启动

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

            java -jar arthas-boot.jar

image.png

选择进程号,也可以在启动的时候加上参数进程号。(Arthas也提供了界面形式交互)
image.png

2、常用命令

1)dashboard:显示进行信息包括线程、JVM、操作系统信息三部分
image.png
2)thread -n 指定最忙的前N个线程并打印堆栈

3)jad 反编译文件 mc 编译java文件 redefine 重新加载字节码文件。结合三个命令可以修改加载的class文件并重新加载到内存里面
4) 排查线上问题最长使用的命令:watch 类名  方法明  ognl表达式(这里监控第一个参数与返回值) 监控条件(这里为第一个参数的nickname等于test)

image.png

5)trace用来查找方法内部的调用以及各方法的耗时,对于优化性能很重要
image.png

6)stack用来寻找方法的调用路径、即谁调用了该方法(对于排查方法的调用路径以及error reason很重要)
image.png

7)tt保存方法一段时间内的调用现场
image.png

可以通过-i参数来查看详细调用
image.png

  1. 排查程序性能问题 profiler 并生成火焰图(火焰图的没一层越宽表示占用cpu时间越长、代表瓶颈),可以导出来svg或者其他形式的图来分析

image.png

images

9)退出客户端 quit 退出arthas服务端 shutdown、stop

以上就是Arthas进行性能分析与问题排查的大概命令了 、更详细的命令请参考官网、欢迎大家进行补充。

0

评论区