首页 > 编程语言 >小景的工具使用--Java诊断工具Arthas的使用说明

小景的工具使用--Java诊断工具Arthas的使用说明

时间:2023-10-23 11:12:07浏览次数:35  
标签:Java 自定义 -- 使用 应用程序 命令 Arthas 工具

小景最近在做程序和数据库的压测工作,期间监控压测数据,分析程序原因变成了一个待解决的问题,根据公司小伙伴的建议,接触了阿尔萨斯这个诊断工具,下面小景分别基于Linux操作系统和Windows操作系统,来详细的说下使用说明和使用心得。

 

Arthas(阿尔萨斯)是一个用于诊断Java应用程序的开源工具,它是一种命令行工具,用于实时分析和调试Java应用程序的运行时行为。它提供了丰富的功能,可以帮助开发人员诊断和解决各种Java应用程序中的性能问题和故障。

基于Linux系统,以下是Arthas的详细使用方式:

    1. 安装Arthas: 首先,您需要安装Arthas。您可以从官方网站 https://alibaba.github.io/arthas/ 下载Arthas的最新版本。下载后,将其解压缩到您选择的目录中。

    2. 启动Arthas: 进入Arthas的安装目录,运行以下命令来启动Arthas:

      ./as.sh或者./as.bat

      这将启动Arthas的命令行界面。

    3. 选择目标应用程序: 在Arthas命令行界面中,您需要选择要诊断的目标Java应用程序。可以使用以下命令列出正在运行的Java应用程序:

      ps

      然后使用-t选项选择目标应用程序,例如:

      -t 12345

      其中,12345是目标应用程序的PID。

    4. 使用命令进行分析和调试: 一旦选择了目标应用程序,您可以使用各种Arthas命令来进行分析和调试。例如,您可以使用以下命令来查看Java类的方法调用栈:

      jad java.lang.String

      或者,您可以使用以下命令来监视方法的调用和响应时间:

      watch com.example.MyClass myMethod '{params,returnObj,throwExp}' -n 3

      这将监视com.example.MyClass中的myMethod方法,并在每次调用时显示参数、返回值和异常信息,最多显示3次。

      • 以下是一些常见的Arthas命令和其详细用法:

        1. help命令: 使用 help 命令可以查看Arthas的帮助文档,列出可用的命令和功能。

          help
        2. dashboard命令: dashboard 命令可以显示仪表板,提供了有关Java应用程序的实时信息,包括线程、堆内存、类加载等。

          dashboard
        3. thread命令: 使用 thread 命令可以查看Java线程的信息,包括线程堆栈和线程状态。

          thread
        4. jvm命令: jvm 命令允许您查看Java虚拟机的信息,如内存使用情况、垃圾回收统计等。

          jvm
        5. trace命令: trace 命令用于跟踪方法的执行,可以用于监视特定方法的输入、输出和执行时间。

          trace com.example.MyClass myMethod
        6. watch命令: watch 命令用于监视方法的调用和返回值。您可以监视特定方法,并查看参数、返回值和异常信息。

          watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
        7. jad命令: jad 命令用于反编译Java类文件,以查看类的源代码。

          jad com.example.MyClass
        8. sc命令: sc 命令用于查看类加载情况,包括已加载的类、未加载的类和类加载器信息。

          sc -d com.example.MyClass
        9. monitor命令: monitor 命令用于监视方法的执行情况,包括执行时间、调用次数等。

          monitor com.example.MyClass myMethod
        10. heapdump命令: heapdump 命令用于生成堆转储文件,以便进行内存分析。

          heapdump /path/to/dump.hprof
    5. 退出Arthas: 要退出Arthas,可以使用quit命令。

以上只是Arthas功能的一个小demo,它还具有许多其他功能,如查看类加载情况、查看线程堆栈、分析性能问题等。您可以查看官方文档以深入了解更多信息。Arthas是一个强大的工具,可帮助您快速诊断和解决Java应用程序中的问题。

 

基于Windows系统,以下是Arthas的详细使用方式:

    1. 下载和安装Arthas:

      1. 访问Arthas的官方网站:https://alibaba.github.io/arthas/,并下载最新版本的Arthas。

      2. 解压缩下载的Arthas压缩包到您的系统中。为了简化操作,您可以将Arthas解压到C:\arthas目录。

    2. 打开命令行界面:

      1. 在Windows系统中,您可以使用命令提示符(Command Prompt)或PowerShell。打开一个新的命令行界面窗口。
    3. 启动Arthas:

      1. 切换到您的Arthas安装目录。在命令行中,使用以下命令:

        cd C:\arthas
      2. 然后,运行 as.bat 脚本来启动Arthas:

        as.bat

      这将启动Arthas的命令行界面。

    4. 选择目标Java应用程序:

      1. 在Arthas的命令行界面中,使用 ps 命令来列出正在运行的Java应用程序,以查找您想要诊断和调试的应用程序。例如:

        ps
      2. 从列表中选择您的目标Java应用程序,并记录其PID(进程ID)。

    5. 连接到目标应用程序:

      1. 使用 -t 选项连接到目标Java应用程序,将 <PID> 替换为您在步骤4中获得的目标应用程序的PID:

        -t <PID>

      例如,如果您的目标应用程序的PID是12345,可以使用以下命令连接到它:

      -t 12345
    6. 使用Arthas命令进行诊断和调试:

      1. 一旦连接到目标应用程序,您可以使用各种Arthas命令来获取关于应用程序的实时信息,进行分析和调试。以下是一些示例命令:

        1. 使用 dashboard 命令查看应用程序的仪表板:

          dashboard
        2. 使用 thread 命令查看线程信息:

          thread
        3. 使用 jvm 命令查看Java虚拟机信息:

          jvm
        4. 使用 trace 命令跟踪方法的执行:

          trace com.example.MyClass myMethod
        5. 使用 watch 命令监视方法的调用和返回值:

          watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
      2. 根据您的需求,使用适当的Arthas命令进行诊断和调试。

    7. 退出Arthas:

      1. 要退出Arthas,您可以在Arthas命令行界面中使用 quit 命令。

在Windows系统上,确保您具有足够的权限来连接到目标Java应用程序,并根据需要处理特殊字符的转义。

最后,再来说下Arthas的拓展和延申:

 

以下是更详细的方式来拓展和延伸Arthas的功能:

  1. 自定义命令:

    Arthas允许您创建自定义命令,这些命令可以用于执行特定的诊断或调试任务。您可以编写自定义命令的插件,以扩展Arthas的功能。这些自定义命令可以是Groovy脚本,以实现各种自定义操作。创建自定义命令的一般步骤如下:

    • 编写Groovy脚本,其中包含自定义操作。
    • 将脚本放置在Arthas的自定义命令目录下,通常是~/.arthas/commands(Linux/macOS)或%USERPROFILE%\.arthas\commands(Windows)。
    • 在Arthas中使用自定义命令名称来调用您的脚本。

    这使您能够根据具体需求创建自定义命令,以执行特定的分析或调试任务。

  2. 使用Arthas插件系统:

    Arthas具有插件系统,您可以使用该系统编写自定义插件来扩展Arthas的功能。插件可以包括自定义命令、自定义函数、拓展性能监控等等。创建Arthas插件的一般步骤如下:

    • 编写Groovy脚本或Java代码,实现自定义插件功能。
    • 将插件打包为JAR文件。
    • 将JAR文件放置在Arthas的插件目录下,通常是~/.arthas/lib(Linux/macOS)或%USERPROFILE%\.arthas\lib(Windows)。
    • 在Arthas中使用插件的功能。

    插件系统使您能够将自定义功能完全集成到Arthas中,以执行高度定制的任务。

  3. 脚本和动态加载:

    Arthas支持通过Groovy脚本进行自定义操作,您可以在运行时加载和执行这些脚本。这使您可以在不重启目标应用程序的情况下灵活地执行自定义代码。例如,您可以使用Groovy脚本来执行动态的方法跟踪、日志记录或性能监控。

  4. 使用Arthas API:

    Arthas提供了Java API,您可以在Java应用程序中集成Arthas,以通过编程方式执行诊断和调试任务。这使得您可以构建自定义工具或集成Arthas的功能到现有的应用程序中。Arthas的API包括ArthasCoreAdviceListener等类,可用于动态诊断和调试Java应用程序。

  5. 结合AOP(面向切面编程):

    您可以使用Arthas的AOP功能来实现方法级别的拦截和切面编程。通过AOP,您可以监控、记录和修改方法的行为,以适应特定需求。AOP可用于性能分析、安全性检查、日志记录等任务。

  6. 远程扩展和监控:

    您可以将Arthas与远程监控工具结合使用,以实现分布式应用程序的诊断和性能监控。这包括将Arthas与ELK堆栈(Elasticsearch、Logstash、Kibana)或Prometheus/Grafana等工具集成,以实现实时监控和日志分析。

  7. 社区和第三方插件:

    在Arthas社区和第三方开发者的支持下,可能会有许多现成的插件和扩展可供使用。您可以查找和使用这些插件,以简化和加速特定任务的执行。

 

最后,希望小景的这篇文章可以帮助您解决实际工作中的问题,有什么问题可以评论区或者关注我的微信公众号来交流。

 

标签:Java,自定义,--,使用,应用程序,命令,Arthas,工具
From: https://www.cnblogs.com/ailanlan/p/17781933.html

相关文章

  • 数学大礼包 - Day 2, 3
    不完整,待后人补充归纳与递推无平局无运气的游戏绝对有必胜策略。\(n\)颗糖,A,B轮流取\(2^k\)个,取完最后一个的获胜。第一制胜点:0递推:能到制胜点的都必败;无论怎么走都是必败点才是制胜点。猜:\(P(3k)=1,P(3k+1)=0,P(3k+2)=0\)。基本不等式(\(\forallx_i\in\mathbb{R......
  • 如何锁定微信保护隐私?
    微信终于原生支持“锁定”功能了!引言一直以来,微信一直扮演者重要的通讯和社交工具,为人们带来极大的便利,由于受众众多,开发者对新功能的推出非常严谨和谨慎,即便是微小的功能增删或改动,都是深思熟虑。但广大用户出于对隐私保护的“锁定”功能的需求是与日俱增和逐渐强烈。有的用户......
  • RBAC的表结构创建
    简介:RBAC是指基于角色的访问控制(Role-BasedAccessControl),它是一种常见的访问控制模型,用于管理和控制用户对系统资源的访问权限。RBAC通过将用户和角色进行关联来管理权限,而不是直接将权限分配给个体用户。具体而言,RBAC模型包括以下几个核心概念:用户(User):系统中的实际用户。......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-21-处理鼠标拖拽-番外篇
    1.简介前边宏哥拖拽有提到那个反爬虫机制,加了各种参数,以及加载js脚本文件还是有问题,偶尔宏哥好像发现了解决问题的办法,看到了黎明的曙光,宏哥就说试一下看看行不行,万一实现了。结果宏哥试了结果真的OK啊,但是宏哥第一次运行可以,后边就不行了,然后将编辑器关闭重启,再次运行又可以,宏哥......
  • 数学大礼包 - Day 1
    逻辑,集合,计数与映射咕咕咕逻辑集合计数逻辑命题:指可以判断对错的叙述.真值:若命题为真则为真(\(1\)),否则为假(\(0\)).充分必要:\(p\Rightarrowq\)指\(p\)推出\(q\),\(p\)为\(q\)充分条件,\(q\)为\(p\)必要条件(可以理解为判定和性质的区别).\(p\Leftrightarro......
  • 使用 MQTTnet 实现 MQTT 通信示例
    转自:https://cloud.tencent.com/developer/article/2103199一、什么是MQTT?MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。MQTT是基于二进制消息的发布/订阅编程模式的消息协议,如今已经成为OASIS......
  • 提供一个网站的相关截图,麻烦提供一个思路如何爬取网站相关数据
    大家好,我是皮皮。一、前言前几天在Python钻石交流群【空】问了一个Python网络爬虫的问题,一起来看看吧。给大家提供一个网站的相关截图,麻烦你们提供一个思路如何爬取网站相关数据,下图这里是数据区。页面数据存储在这里的json里。二、实现过程常规来说,这个都返回json了,解析j......
  • 农业全要素生产率的计算(使用HiveQL分析)
    需求:工作中需要计算农业全要素生产率数据,需要利用HiveQL进行数据仓库提取,然后进行转换式计算,最后需要进行要素生产效率分析,用于后续的深度数据挖掘。解决:CREATETABLEIFNOTEXISTSmytable( col1STRING, col2INT, col3DOUBLE)ROWFORMATDELIMITEDFIELDSTERMIN......
  • 良心软件!视频、音频、图片、文档等各种格式转换,甚至屏幕录像都支持!
    良心软件!视频、音频、图片、文档甚至录屏都支持!主打一个免费多功能的多媒体文件转换工具引言 温馨提示:上面视频中有3D环绕背景音乐,请带上耳机效果更好它能干些什么?看它自己做的自我介绍,它都有哪些功能,可以做什么事情: “ 支持各种类型的最新视频格式、音频格式......
  • 如何调用Metabase开放API
    简介:Metabase是什么?在传统企业的数据可视化业务中,通常需要从需求到审批,再到安排开发人员和排期,还要开发人员撰写代码最后再做导出。流程繁琐,参与的人员也多,往往需要几天甚至几周的时间!使用Metabase可以大大节省成本,简单易上手,Metabase把数据分析常用的查询通过一个个易于操......