Arthas使用

起因:最近一直在和各种各样的性能问题做斗争,其中就有关乎线上Java程序运行不稳定时快时慢,线下完全正常这个诡异无比的问题。生产环境的调优一直是一个非常麻烦的问题。因此需要工具和方法论去解决问题。这里介绍下相关工具,下篇文章介绍最后优化的过程。

这次说的是Arthas这个工具。Arthas是阿里开发的Java线上诊断工具。主要解决问题:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到JVM的实时运行状态?
  7. 怎么快速定位应用的热点,生成火焰图?

使用方法:

  1. 下载arthas-boot.jar:

    wget https://alibaba.github.io/arthas/arthas-boot.jar
    java -jar arthas-boot.jar
    然后用java -jar的方式启动:
    
  2. 使用运行:

    java -jar arthas-boot.jar 
    [INFO] arthas-boot version: 3.1.0
    [INFO] Found existing java process, please choose one and hit RETURN.
    
  3. 查看dashboard

    dashborad
    
  4. 通过thread命令来获取到arthas-demo进程的Main Clas

    thread 1
    
  5. 通过jad来反编译Main Class

    jad demo.MathGame
    
    
  6. 通过watch命令来查看demo.MathGame#primeFactors函数的返回值:

    watch

Lokie博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本博客使用免费开源的 laravel-bjyblog v5.5.1.1 搭建 © 2014-2018 lokie.wang 版权所有 ICP证:沪ICP备18016993号
  • 联系邮箱:kitche1985@hotmail.com