Arthas实战

Arthas: 官网    githubjava

Arthas是什么

Arthas 是Alibaba开源的Java诊断工具,方便开发者进行问题的定位和诊断。git

巨人的肩膀

  • greys-anatomy: Arthas代码基于Greys二次开发而来
  • termd: Arthas的命令行实现基于termd开发,termd是一款优秀的命令行程序开发框架
  • crash: Arthas的文本渲染功能基于crash中的文本渲染功能开发
  • cli: Arthas的命令行界面基于vert.x提供的cli库进行开发

能够作什么

  1. 查看方法调用状况
  2. 查看方法入参
  3. 反编译源码
  4. 查看系统的运行情况
  5. 监控到JVM的实时运行状态
  6. more..

安装

  • 方法一,使用arthas-boot(推荐):github

    wget https://alibaba.github.io/arthas/arthas-boot.jar  
      java -jar arthas-boot.jar
  • 方法二,使用as.sh:shell

    curl -L https://alibaba.github.io/arthas/install.sh | sh

启动

在上一步安装完成以后,会下载启动脚本文件 as.sh 到当前目录,直接在shell下面执行./as.sh,此时会出现当前运行着的Java程序,输入你想诊断的程序的序号,就会进入交互界面,而后能够在交互界面执行各类arthas命令来帮咱们诊断程序。框架

命令实例

  • Dashboard 查看当前系统和jvm的信息:dashboard

<img src="http://images.cnblogs.com/cnblogs_com/muxuanchan/1359920/o_dashboard.png" width = "600" height = "400" alt="dashboard" align=center />curl

  • Jad
  • 此命令能够查看线上运行的代码是否和你预期的同样

反编译WmsCarInsAOImpl类源码:jad com.mhc.mclaren.ao.impl.WmsCarInsAOImpljvm

  • Stack
  • 运行此命令以后须要即时触发方法才会有响应的信息打印在控制台上

查看方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 的调用堆栈工具

  • Trace
  • 运行此命令以后须要即时触发方法才会有响应的信息打印在控制台上
  • 只能看到下一级的子调用

观察方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 执行的时候每一个子调用的运行时长,能够找到最耗时的子调用。atom

  • Watch
  • 运行此命令以后须要即时触发方法才会有响应的信息打印在控制台上

观察方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 执行的入参url

总结

  上面用几个实际的例子让你对arthas有一个直观的印象,可是arthas能作的事还远远不止这些,有更多的命令和用法值得你去挖掘,相信它对于你定位线上问题有不小的帮助,let`s enjoy it !!

相关文章
相关标签/搜索