最近跟一个网友讨论游戏框架的问题,在说到热更新的时候,他给我介绍了这个工具Arthas。最近学习了下,这个工具不仅能实现游戏的热更新,在解决线上问题的时候也非常实用的,今天跟大家分享下。

 

一、简介

官网:https://alibaba.github.io/arthas/

根据官网的介绍,Arthas 是Alibaba开源的Java诊断工具,可在线排查问题、动态跟踪Java代码、实时监控JVM状态等。并且采用命令行交互模式,操作起来还算挺友好。

 

二、实用场景

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 是否有一个全局视角来查看系统的运行状况?
  2. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  3. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception
  4. 为什么 CPU 又升高了,到底是哪里占用了 CPU
  5. 运行的多线程有死锁吗?有阻塞吗
  6. 程序运行耗时很长,是哪里耗时比较长呢?如何监测呢

三、实用

这个工具的使用官网的说明还是相当详细的,还提供基础教程和进阶教程,这些实验都可以在官网操作,简直牛逼,给马云点个赞,养了这么多的牛逼家伙。这样我就大致介绍下用法就好

1.安装:

curl -O https://alibaba.github.io/arthas/arthas-boot.jar

2.启动:

java -jar arthas-boot.jar

此时会提示你要检查的程序id,只要选择对应程序序号即可

成功后,在浏览器中访问http://127.0.0.1:8563/即可进入控制面板

Arthas实践_官网

3.常用命令
dashboard    当前系统的实时数据面板
thread    查看当前 JVM 的线程堆栈信息
watch    方法执行数据观测
trace    方法内部调用路径,并输出方法路径上的每个节点上耗时
stack    输出当前方法被调用的调用路径
jvm    查看当前 JVM 信息
sc    查看 JVM 已加载的类信息
sm    查看已加载类的方法信息
jad    反编译指定已加载类的源码

至于这些命令的具体操作方式,在官网上即可查到详细的范例,大家可以去官网把这些功能过一下,以后碰到线上问题的时候心里更有数奥!

4.示例

查看线程信息

Arthas实践_官网_02

查看指定线程,可以看到具体是哪行代码导致的cpu暴涨

thread [ID]

Arthas实践_官网_03

 

反编译查看当前运行的代码是否正确

Arthas实践_jar_04

 

更多内容请关注微信公众号“外里科技

官方公众号

外里科技

运营公众号

英雄赚





开源代码

https://gitee.com/B_T/beimi

Arthas实践_官网_05