随笔 - 5  文章 - 0 评论 - 0 阅读 - 874
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

场景:

1 这个类从那个jar包加载的,为什么会报各种类相关的Exception。
2 我改的代码为什么没有执行到。
3 遇到问题无法线上debug,线下无法复现。
4 全局视角来查看系统的运行状态
5 快速定位应用的热点,生成火焰图。

方便之处

jdk 1.6+
linux/mac/windows
命令行交互模式
tab自动补全
下载arthas-boot.jar,使用java -jar直接启动

在线安装(windows)

curl https://alibaba.github.io/arthas/arthas-boot.jar
# 存在启动的java进程
java -jar arthas-boot.jar
# 会在线安装一个arthas,目录C:\Users\user\.arthas\lib\3.6.7\arthas

离线安装(linux)

用法:

定位高耗时代码。
java -jar arthas.jar
可以看到服务器上的java进程,选中java进程
trace 包名.类名 方法名
可以监听该方法,调用到该方法时打印调用链,并可以看到耗时,高亮显示异常耗时。
不停服地热部署应用。
编写好一个要替换的class文件,retransform 编译好的class文件位置
监听一个方法的参数和返回值。
watch 全类名 方法名 "{params[0],returnObj}",监听某个具体字段,watch 全类名 方法名 "{params[0].field,returnObj}"
火焰图。
开启profiler start,看状态profiler status,停止profiler stop,生成html文件,打开后查看红色部分为cpu过高的方法。
快速定位cpu过高代码和线程死锁问题。
thread命令查看当前的一个线程状态。thread 线程id,查看线程的详情状态。thread -n 3,查看cpu过高的前三个代码。thread -b 查看线程死锁代码。thread命令执行后,查看状态也能知道那些死锁线程,直接thread 线程id,查看详情。
posted on   xing54321  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示