zoukankan      html  css  js  c++  java
  • Arthas

    什么是Arthas?

      Arthas(阿尔萨斯)是阿里巴巴中间件开源的一款Java诊断工具,开始在淘宝内部孵化使用,后来成为阿里Java项目必须使用的内部工具。2018年arthas成为阿里开源项目,代码托管在GitHub上,star数高达23.3k,深受Java开发者的喜爱

      Arthas基于Greys进行二次开发,主要利用Java6开始提供的instrumentation特性,动态增强你所指定的类,获取你想要得到的信息,采用命令行交互模式,同时提供tab自动补全功能,无需重启;动态跟踪Java代码;实现监控jvm状态。

      原理:进程间通讯的方式,启动客户端attach到目标进程的虚拟机上,然后远程执行一些操作。很多方法都是通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,需要尽量明确需要观测的类、方法以及条件,诊断结束后要执行stop获或者将增强过的类执行reset命令。

    为什么需要Arthas?
      当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
        这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
        我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
        遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
        线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
        是否有一个全局视角来查看系统的运行状况?
        有什么办法可以监控到JVM的实时运行状态?
        怎么快速定位应用的热点,生成火焰图?
      Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

    优点:
      定位问题减少重新编译代码、重启服务
      动态监控Java进程
      0代码侵入
      灵活、可插拔

    安装
      参考:https://arthas.aliyun.com/doc/install-detail.html
      1、jdk安装配置
      2、解压arthas-3.x.x-bin.zip即可使用
      3、java -jar arthas-boot.jar

    卸载
      在 Linux/Unix/Mac 平台
      删除下面文件:
      rm -rf ~/.arthas/     
      rm -rf ~/logs/arthas
      Windows平台直接删除user home下面的.arthas和logs/arthas目录

    启动
         java -jar arthas-boot.jar
      在命令行执行(使用与目标进程一致的用户启动,否则可能attach失败)

    退出
         如果只是退出当前的连接,可以直接quit或者exit退出。attach到目标进程的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。如果想完全退出,请执行stop命令。

    基础命令
      help——查看命令帮助信息
      cls——清空当前屏幕区域
      session——查看当前会话的信息
      reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
      version——输出当前目标 Java 进程所加载的 Arthas 版本号
      history——打印命令历史
      quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
      stop——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
      keymap——Arthas快捷键列表及自定义快捷键

    JVM相关命令
      dashboard--当前系统的实时数据面板
      thread--查看当前JVM线程堆栈信息
      jvm--查看当前jvm的信息
      sysprop--查看和修改JVM的系统属性
      sysenv--查看JVM的环境变量
      getstatic--查看类的静态属性
      ognl--查看ognl表达式
      mbean--查看MBean的信息
      vmoption--查看JVM参数

    观测相关命令
      请注意,这些命令都是字节码增强技术实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此线上、预发使用时,需要尽量明确需要观测的类、方法以及条件,诊断结束后也要执行stop命令或者将增强过的类执行reset命令
      monitor--方法执行监控
      watch--方法执行数据观测
      trace--方法内部调用路径,并输出方法路径上的每个节点上耗时
      stack--输出当前方法被调用的调用路径
      tt--方法执行数据的时空隧道,记录下指定方法每次调用的入参、出参,并能对这些不同时间下的调用进行观测

    GitHub地址:https://github.com/alibaba/arthas/wiki
    用户手册:https://arthas.aliyun.com/doc/quick-start.html
    思维导图:https://user-images.githubusercontent.com/1683936/71873638-a697b800-315a-11ea-9862-fbfa8e470064.png

  • 相关阅读:
    ASP.NET Core Docker部署
    Asp.net core WebApi 使用Swagger生成帮助页实例
    C#图片文字识别
    C#实现rabbitmq 延迟队列功能
    Windows下当地RabbitMQ服务的安装
    看大数据时代下的IT架构(1)业界消息队列对比
    查看sqlserver被锁的表以及如何解锁
    如何让win2008服务器显示中文无乱码
    Lucene.Net的服务器封装+APi组件 (开源)
    Oracle学习系列4
  • 原文地址:https://www.cnblogs.com/hzzjj/p/14792540.html
Copyright © 2011-2022 走看看