• 阿里开源的Java诊断工具Arthas(阿尔萨斯)


    作为大自然搬运工,只是为了帮助大家扩展视野.有兴趣建议直奔官网.

    官网       下载

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

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

    Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

    快速安装启动:

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

    打印帮助参数

    java -jar arthas-boot.jar -h

    Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

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

    上述命令会下载启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。直接在shell下面执行./as.sh,就会进入交互界面。

    以Java Agent的方式启动

    下载全量的arthas zip包,解压之后以 -javaagent 的参数指定arthas-agent.jar来启动:

    java -javaagent:/tmp/test/arthas-agent.jar -jar arthas-demo.jar

    Windows下安装使用

    arthasarthas-packaging-3.1.4-bin  下面有一个arthas-boot.jar包    

    执行 (需要保证执行该程序的用户需要和目标进程具有相同权限)java -jar arthas-boot.jar  

    命令行会找到本机所有正在运行的Java进程并编号输入编号进入相应的Java进程

     阿里提供了比较友好的WebConsole,可以在浏览器输入127.0.0.1:8563 进行访问

    当我们进入这个界面之后,想了解我们的JAVA进程内部的任何信息,都可以找到相关命令去获取信息,每个命令后都可加相关参数去查询更精准的所需信息

    dashboard   当前系统的实时数据面板,按 ctrl+c 退出。

    thread       查看当前线程信息,查看线程的堆栈

    jvm       查看当前JVM信息

    sysprop     查看当前JVM的系统属性(System Property)

    sysenv    查看当前JVM的环境属性(System Environment Variables)

    vmoption      查看,更新VM诊断相关的参数

    perfcounter  查看当前JVM的 Perf Counter信息

    sc         查看JVM已加载类信息

    sm          查看已加载类的方法信息

    jad          反编译指定已加载类的源码

    watch     让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值抛出异常入参,通过编写 OGNL 表达式进行对应变量的查看

    trace      方法内部调用路径,并输出方法路径上的每个节点上耗时

    命令还有很多,这里就不一一列举,此处仅为抛砖引玉,欲知更多相关内容,请再次奔向官网,官网也有中文文档,对于国人开发者也比较友好

  • 相关阅读:
    C++ Builder 全部API函数列表
    返回对应对象的克隆方法
    如何求出三角形的面积
    通用序列化基类 只须实现该类抽象成员即可进行序列化与反序列化
    【分享】JS添加/删除事件处理函数(支持IE,FF,opera,safari)
    如何将字符串序列化到CDATA块中(Serializing A String Within a CDATA Element )
    反射调用静态类的方法,字段
    浏览器选项
    AppDomain 和动态加载
    c#中Enum类型定义与获取值或描述方法 半语小马哥 CSDNBlog
  • 原文地址:https://www.cnblogs.com/zhaoletian/p/12851548.html
Copyright © 2020-2023  润新知