arthas的安装和使用
1、介绍
接触arthas,是源于被安利,可用于问题定位,学习一下。
官网文档写得很好,但如果要真正比较好地用起来,是需要真实案例不断去尝试学习,
其他看官网:https://arthas.aliyun.com/doc/index.html
2、为什么要用arthas
官网描述:可以类似于解决以下的一些问题,就是出现问题了,快速定位!
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? 怎么快速定位应用的热点,生成火焰图? 怎样直接从JVM内查找某个类的实例?
3、下载/安装
就按官网说的下载就是了,这个没什么的。解压后,可以用脚本执行,也可以 java -jar 的方式进行启动
java -jar arthas-boot.jar
然后它会打印对应的java进程,选择pid,进入进程的跟踪
4、使用
这个得找真实案例,真的去使用才能得到经验,才能用得越来越得心应手。
emm,没什么好说的。
关于它的使用,有一个性能定位的,真的超级无敌好用,
比如有一个接口请求很慢,那么,排除网络什么的外部问题,定位到就是接口慢,怎样定位究竟是接口的哪个方法慢了呢?arthas能够提供的帮助真的是让人感动。
它就是可以让你一步一步去看,究竟是哪一步慢了
语法就是 trace com.xx.xx.xxxService xxx (即 trace 类路径 方法名)
然后,回车,出现以下字样,表示就进入了一种监听状态
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 70 ms, listenerId: 6
这个时候,再去调用接口,它就会把方法里面一些耗时的方法打印出来
这样,我们就能够发现,调用了什么方法,分别耗时多少,然后找到耗时最高的,再进一步去跟踪。直到找到问题根源。
1、查看入参
watch com.xx.xx.support.sysmgt.service.controller.SysMenuController request params : 查看SysMenuController 这个类 request 这个方法的入参监听
watch com.ailk.openbilling.ams.action.freeResourceQuery.FreeResourceQueryActionImpl queryFreeRes "{params}"
2、查看出参
watch com.ailk.openbilling.ams.action.freeResourceQuery.FreeResourceQueryActionImpl queryFreeRes “{returnObj}” -x 4
5、一些案例参考:
https://github.com/alibaba/arthas/issues?q=label%3Auser-case
这个是可以看到别人是怎样用 arthas 去做一些问题定位,也帮助学习和使用arthas,有更深的了解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南