Arthas学习一

2020-12-27  本文已影响0人  裂开的汤圆

官方文档

https://arthas.gitee.io

Arthas可以解决的问题

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

Arthas下载安装启动

https://arthas.gitee.io/download.html
使用以下命令启动arthas时,需要有后台有Java进程在执行,先将IDEA启动即可。

java -jar arthas-boot.jar

attach java进程

普通情况下,直接使用以下命令,然后选择相应的Java进程,就能attach到相应的进程。

java -jar arthas-boot.jar 

如果出现端口占用的情况,可以使用以下命令,指定新的端口

java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

通过浏览器链接arthas

arthas支持web console,用户再attach成功之后,可以直接访问http://127.0.0.1:3658。
默认情况下,arthas只listen 127.0.0.1,如果想从远程访问,可以使用--target -ip参数指定listen的IP

准备工作

去以下github地址将代码下载下来后执行

1.启动arthas, attach进上述进程


image.png

常用命令-dashboard

输入dashboard,会展示当前所有java线程的信息。

image.png

第一部分,显示JVM中运行的所有线程:

第二部分,显示JVM内存使用情况:

第三部分,显示操作系统的信息以及Java版本号

常用命令-thread

可以通过thread命令来获取到arthas-demo进程的Main Class。
thread 1会打印线程ID 1的栈,通常是main函数的线程。

image.png

常用命令- jad

通过jad来反编译Main Class

jad MathGame
image.png

常用命令-watch

通过watch命令来查看函数的返回值

watch 包名.类名 方法名 返回值
watch MathGame primeFactors returnObj
image.png

退出arthas

可以使用quit或exit命令退出,attach到目标进程上的arthas还会继续运行,端口会保持开放。

如果想完全退出,可以执行stop命令。

上一篇下一篇

猜你喜欢

热点阅读