• Arthas实战


    Arthas: 官网    github

    Arthas是什么

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

    巨人的肩膀

    • 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(推荐):

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

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

    启动

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

    命令实例

    • Dashboard
      查看当前系统和jvm的信息:dashboard
    dashboard
    • Jad
    • 此命令可以查看线上运行的代码是否和你预期的一样

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

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

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

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

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

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

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

    总结

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

    如果您觉得本文对你有用,不妨帮忙点个赞,或者在评论里留言交流,欢迎您持续关注我的博客^_^
  • 相关阅读:
    STM32 HAL库I2C的使用以AT24C02为例
    思科ASA防火墙实现双机热备
    Kafka笔记:基础概念和原理 山上下了雪
    OpenCV(一)之图片&视频的加载和显示
    MySql数据库的基本语法
    python 将二进制文件转为文本文件
    Windows安装MySQL及常见报错处理
    Laravel实现mysql的OR
    Laravel实现FIND_IN_SET
    Laravel打印完整SQL
  • 原文地址:https://www.cnblogs.com/muxuanchan/p/10097639.html
Copyright © 2020-2023  润新知