最近跟一个网友讨论游戏框架的问题,在说到热更新的时候,他给我介绍了这个工具Arthas。最近学习了下,这个工具不仅能实现游戏的热更新,在解决线上问题的时候也非常实用的,今天跟大家分享下。
一、简介
官网:https://alibaba.github.io/arthas/
根据官网的介绍,Arthas
是Alibaba开源的Java诊断工具,可在线排查问题、动态跟踪Java代码、实时监控JVM状态等。并且采用命令行交互模式,操作起来还算挺友好。
二、实用场景
当你遇到以下类似问题而束手无策时,Arthas
可以帮助你解决:
-
是否有一个全局视角来查看系统的运行状况?
-
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
-
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception
-
为什么 CPU 又升高了,到底是哪里占用了 CPU
-
运行的多线程有死锁吗?有阻塞吗
-
程序运行耗时很长,是哪里耗时比较长呢?如何监测呢
三、实用
这个工具的使用官网的说明还是相当详细的,还提供基础教程和进阶教程,这些实验都可以在官网操作,简直牛逼,给马云点个赞,养了这么多的牛逼家伙。这样我就大致介绍下用法就好
1.安装:
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
2.启动:
java -jar arthas-boot.jar
此时会提示你要检查的程序id,只要选择对应程序序号即可
成功后,在浏览器中访问http://127.0.0.1:8563/即可进入控制面板
3.常用命令
dashboard 当前系统的实时数据面板
thread 查看当前 JVM 的线程堆栈信息
watch 方法执行数据观测
trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
stack 输出当前方法被调用的调用路径
jvm 查看当前 JVM 信息
sc 查看 JVM 已加载的类信息
sm 查看已加载类的方法信息
jad 反编译指定已加载类的源码
至于这些命令的具体操作方式,在官网上即可查到详细的范例,大家可以去官网把这些功能过一下,以后碰到线上问题的时候心里更有数奥!
4.示例
查看线程信息
查看指定线程,可以看到具体是哪行代码导致的cpu暴涨
thread [ID]
反编译查看当前运行的代码是否正确
更多内容请关注微信公众号“外里科技”
官方公众号 | 外里科技 |
运营公众号 | 英雄赚 |
微信 | wxid_8awklmbh1fzm22 |
1247408032 | |
开源代码 | https://gitee.com/B_T/beimi |