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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
2019-05-27 java 日历计算农历和节假日的工具类