Arthas-使用

说明

之前一直不想学习Arthas,想着生产不能随便用。用于动态添加调试日志还是很方便的,还有更多更强大功能慢慢研究

官网:https://arthas.gitee.io/index.html

 

下载并连接

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

 

 

动态新增调试日志

 

用于增加业务代码调试日志,或者框架内部调试日志很方便

#将方法区指定类,反编译成java文件 --source-only是不生成classLoader信息 可以看自己代码是否有改到之类的
jad --source-only  com.liqiang.demo.controller.HelloWordController > /Users/liqiang/Desktop/logs/HelloWordController.java

#修改反编译的java修改后编译成class并输出到指定目录 复杂类可能会失败,可以通过本地编译成class然后替换
mc -d /Users/liqiang/Desktop/logs /Users/liqiang/Desktop/logs/HelloWordController.java

#热部署重新加载指定class,可以指定classLoader
redefine /Users/liqiang/Desktop/logs/com/liqiang/demo/controller/HelloWordController.class

链路追踪

更多使用方式看文档trace命令,缺点好像是aop切面里面的耗时统计不了,只能定位到aop 然后一次监控aop里面调用的业务代码

 trace com.ewei.module.talk.service.impl.ChatCacheServiceImpl updateEngineerQueue --skipJDKMethod true

skipJDKMethod 是否统计jdk代码的堆栈

https://arthas.gitee.io/trace.html

跟业务代码看到for循多次访问了多次redis 可以通过优化为管道

观察函数入参和出参

whatch文档

https://arthas.gitee.io/watch.html

watch com.ewei.helpcenter.logic.impl.AccessConfigLogicImpl validPasswordMessage "{params}" -b -x 3

watch com.ewei.web.controller.account.EngineerController doEngineerInit "{params, returnObj}" -b

关于线程

查看所有线程

thread

查看最忙的前n个线程并打印堆栈 

thread -n 3

 

posted @ 2022-05-27 17:53  意犹未尽  阅读(159)  评论(0编辑  收藏  举报