小景的工具使用--Java诊断工具Arthas的使用说明
小景最近在做程序和数据库的压测工作,期间监控压测数据,分析程序原因变成了一个待解决的问题,根据公司小伙伴的建议,接触了阿尔萨斯这个诊断工具,下面小景分别基于Linux操作系统和Windows操作系统,来详细的说下使用说明和使用心得。
Arthas(阿尔萨斯)是一个用于诊断Java应用程序的开源工具,它是一种命令行工具,用于实时分析和调试Java应用程序的运行时行为。它提供了丰富的功能,可以帮助开发人员诊断和解决各种Java应用程序中的性能问题和故障。
基于Linux系统,以下是Arthas的详细使用方式:
安装Arthas: 首先,您需要安装Arthas。您可以从官方网站 https://alibaba.github.io/arthas/ 下载Arthas的最新版本。下载后,将其解压缩到您选择的目录中。
启动Arthas: 进入Arthas的安装目录,运行以下命令来启动Arthas:
./as.sh或者./as.bat这将启动Arthas的命令行界面。
选择目标应用程序: 在Arthas命令行界面中,您需要选择要诊断的目标Java应用程序。可以使用以下命令列出正在运行的Java应用程序:
ps然后使用
-t选项选择目标应用程序,例如:-t 12345其中,12345是目标应用程序的PID。
使用命令进行分析和调试: 一旦选择了目标应用程序,您可以使用各种Arthas命令来进行分析和调试。例如,您可以使用以下命令来查看Java类的方法调用栈:
jad java.lang.String或者,您可以使用以下命令来监视方法的调用和响应时间:
watch com.example.MyClass myMethod '{params,returnObj,throwExp}' -n 3这将监视
com.example.MyClass中的myMethod方法,并在每次调用时显示参数、返回值和异常信息,最多显示3次。以下是一些常见的Arthas命令和其详细用法:
help命令: 使用help命令可以查看Arthas的帮助文档,列出可用的命令和功能。helpdashboard命令:dashboard命令可以显示仪表板,提供了有关Java应用程序的实时信息,包括线程、堆内存、类加载等。dashboardthread命令: 使用thread命令可以查看Java线程的信息,包括线程堆栈和线程状态。threadjvm命令:jvm命令允许您查看Java虚拟机的信息,如内存使用情况、垃圾回收统计等。jvmtrace命令:trace命令用于跟踪方法的执行,可以用于监视特定方法的输入、输出和执行时间。trace com.example.MyClass myMethodwatch命令:watch命令用于监视方法的调用和返回值。您可以监视特定方法,并查看参数、返回值和异常信息。watch com.example.MyClass myMethod '{params,returnObj,throwExp}'jad命令:jad命令用于反编译Java类文件,以查看类的源代码。jad com.example.MyClasssc命令:sc命令用于查看类加载情况,包括已加载的类、未加载的类和类加载器信息。sc -d com.example.MyClassmonitor命令:monitor命令用于监视方法的执行情况,包括执行时间、调用次数等。monitor com.example.MyClass myMethodheapdump命令:heapdump命令用于生成堆转储文件,以便进行内存分析。heapdump /path/to/dump.hprof
退出Arthas: 要退出Arthas,可以使用
quit命令。
以上只是Arthas功能的一个小demo,它还具有许多其他功能,如查看类加载情况、查看线程堆栈、分析性能问题等。您可以查看官方文档以深入了解更多信息。Arthas是一个强大的工具,可帮助您快速诊断和解决Java应用程序中的问题。
基于Windows系统,以下是Arthas的详细使用方式:
下载和安装Arthas:
访问Arthas的官方网站:https://alibaba.github.io/arthas/,并下载最新版本的Arthas。
解压缩下载的Arthas压缩包到您的系统中。为了简化操作,您可以将Arthas解压到C:\arthas目录。
打开命令行界面:
- 在Windows系统中,您可以使用命令提示符(Command Prompt)或PowerShell。打开一个新的命令行界面窗口。
启动Arthas:
切换到您的Arthas安装目录。在命令行中,使用以下命令:
cd C:\arthas然后,运行
as.bat脚本来启动Arthas:as.bat
这将启动Arthas的命令行界面。
选择目标Java应用程序:
在Arthas的命令行界面中,使用
ps命令来列出正在运行的Java应用程序,以查找您想要诊断和调试的应用程序。例如:ps从列表中选择您的目标Java应用程序,并记录其PID(进程ID)。
连接到目标应用程序:
使用
-t选项连接到目标Java应用程序,将<PID>替换为您在步骤4中获得的目标应用程序的PID:-t <PID>
例如,如果您的目标应用程序的PID是12345,可以使用以下命令连接到它:
-t 12345使用Arthas命令进行诊断和调试:
一旦连接到目标应用程序,您可以使用各种Arthas命令来获取关于应用程序的实时信息,进行分析和调试。以下是一些示例命令:
使用
dashboard命令查看应用程序的仪表板:dashboard使用
thread命令查看线程信息:thread使用
jvm命令查看Java虚拟机信息:jvm使用
trace命令跟踪方法的执行:trace com.example.MyClass myMethod使用
watch命令监视方法的调用和返回值:watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
根据您的需求,使用适当的Arthas命令进行诊断和调试。
退出Arthas:
- 要退出Arthas,您可以在Arthas命令行界面中使用
quit命令。
- 要退出Arthas,您可以在Arthas命令行界面中使用
在Windows系统上,确保您具有足够的权限来连接到目标Java应用程序,并根据需要处理特殊字符的转义。
最后,再来说下Arthas的拓展和延申:
以下是更详细的方式来拓展和延伸Arthas的功能:
自定义命令:
Arthas允许您创建自定义命令,这些命令可以用于执行特定的诊断或调试任务。您可以编写自定义命令的插件,以扩展Arthas的功能。这些自定义命令可以是Groovy脚本,以实现各种自定义操作。创建自定义命令的一般步骤如下:
- 编写Groovy脚本,其中包含自定义操作。
- 将脚本放置在Arthas的自定义命令目录下,通常是
~/.arthas/commands(Linux/macOS)或%USERPROFILE%\.arthas\commands(Windows)。 - 在Arthas中使用自定义命令名称来调用您的脚本。
这使您能够根据具体需求创建自定义命令,以执行特定的分析或调试任务。
使用Arthas插件系统:
Arthas具有插件系统,您可以使用该系统编写自定义插件来扩展Arthas的功能。插件可以包括自定义命令、自定义函数、拓展性能监控等等。创建Arthas插件的一般步骤如下:
- 编写Groovy脚本或Java代码,实现自定义插件功能。
- 将插件打包为JAR文件。
- 将JAR文件放置在Arthas的插件目录下,通常是
~/.arthas/lib(Linux/macOS)或%USERPROFILE%\.arthas\lib(Windows)。 - 在Arthas中使用插件的功能。
插件系统使您能够将自定义功能完全集成到Arthas中,以执行高度定制的任务。
脚本和动态加载:
Arthas支持通过Groovy脚本进行自定义操作,您可以在运行时加载和执行这些脚本。这使您可以在不重启目标应用程序的情况下灵活地执行自定义代码。例如,您可以使用Groovy脚本来执行动态的方法跟踪、日志记录或性能监控。
使用Arthas API:
Arthas提供了Java API,您可以在Java应用程序中集成Arthas,以通过编程方式执行诊断和调试任务。这使得您可以构建自定义工具或集成Arthas的功能到现有的应用程序中。Arthas的API包括
ArthasCore和AdviceListener等类,可用于动态诊断和调试Java应用程序。结合AOP(面向切面编程):
您可以使用Arthas的AOP功能来实现方法级别的拦截和切面编程。通过AOP,您可以监控、记录和修改方法的行为,以适应特定需求。AOP可用于性能分析、安全性检查、日志记录等任务。
远程扩展和监控:
您可以将Arthas与远程监控工具结合使用,以实现分布式应用程序的诊断和性能监控。这包括将Arthas与ELK堆栈(Elasticsearch、Logstash、Kibana)或Prometheus/Grafana等工具集成,以实现实时监控和日志分析。
社区和第三方插件:
在Arthas社区和第三方开发者的支持下,可能会有许多现成的插件和扩展可供使用。您可以查找和使用这些插件,以简化和加速特定任务的执行。
最后,希望小景的这篇文章可以帮助您解决实际工作中的问题,有什么问题可以评论区或者关注我的微信公众号来交流。
小景的工具使用--Java诊断工具Arthas的使用说明的更多相关文章
- java 诊断工具——Arthas
该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql! 接下来!今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 ja ...
- Java 诊断工具 Arthas 教程学习笔记
Java 诊断利器 Arthas,是阿里的一款开源工具.Github-alibaba/arthas 上可以看到它的介绍.了解它,主要是最近对分析 Java 错误堆栈比较感兴趣,机缘巧合看到了它. 本文 ...
- Alibaba Java诊断工具Arthas之快速安装和简单使用
Alibaba Java诊断工具Arthas简单介绍 : 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...
- Arthas Alibaba 开源 Java 诊断工具
Arthas 用户文档 English Docs Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,A ...
- Java诊断工具Arthas
Java诊断工具Arthas 1. Arthas简介 Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类.昨天试用了一下,发现真是强大,解决了我工作两年的很多 ...
- 【Java】15分钟快速体验阿里Java诊断工具Arthas
[墙裂推荐]15分钟快速体验阿里Java诊断工具Arthas : https://alibaba.github.io/arthas/arthas-tutorials?language=cn&i ...
- 阿里JAVA诊断工具Arthas的初步使用
Arthas 是Alibaba开源的Java诊断工具,主要解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 comm ...
- Alibaba Java诊断工具Arthas查看Dubbo动态代理类
原创/朱季谦 阅读Dubbo源码过程中,会发现,Dubbo消费端在做远程调用时,默认通过 Javassist 框架为服务接口生成动态代理类,接着再去调用代理类实现远程接口调用.在阅读这部分源码时,最后 ...
- 干货分享!JAVA诊断工具Arthas在Rainbond上实践~
别再担心线上 Java 业务出问题怎么办了,Arthas 帮助你解决以下常见问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 ...
- Java诊断利器Arthas
1 简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 ...
随机推荐
- 如何将mp4文件解复用并且解码为单独的.yuv图像序列以及.pcm音频采样数据?
一.初始化解复用器 在音视频的解复用的过程中,有一个非常重要的结构体AVFormatContext,即输入文件的上下文句柄结构,代表当前打开的输入文件或流.我们可以将输入文件的路径以及AVFormat ...
- K8S | 容器和Pod组件
对比软件安装和运行: 一.场景 作为研发人员,通常自己电脑的系统环境都是非常复杂,在个人的习惯上,是按照下图的模块管理电脑的系统环境: 对于「基础设施」.「主机操作系统」.「系统软件」来说,通常只做配 ...
- Java 中的值传递和引用传递 ?
一. 介绍 值传递:值传递(Pass-by-Value)当我们向方法传递参数时,实际上是将该参数的值进行拷贝,并将拷贝后的值传递给方法内部.在方法内部对参数进行修改不会影响原始变量的值. 引用传递:引 ...
- 我真的想知道,AI框架跟计算图什么关系?PyTorch如何表达计算图?
目前主流的深度学习框架都选择使用计算图来抽象神经网络计算表达,通过通用的数据结构(张量)来理解.表达和执行神经网络模型,通过计算图可以把 AI 系统化的问题形象地表示出来. 本节将会以AI概念落地的时 ...
- vue2 如何实现将dom元素转移到指定节点
背景:在写商城页面时,PC端给的设计图纸是按照宽度1920给的,内部内容区域(main)1191px,写死的指定宽度.然后新出了一个页面,类似于12306的这个页面,图片部分,直接占满了屏幕的100v ...
- JS自制极简日历Demo
这个日历界面不属于任何插件,纯粹用最基本的JS函数获取到每个位置对应的日期,然后再通过遍历拼接table表单的方式赋值到HTML里面进行展示,日历效果的显示,其中使用到的文件只需要一个Jquery的J ...
- [ABC128E] Roadwork
2023-01-14 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 区间覆盖,线段树,双堆 解题思路 可以将问题转化为区间覆盖问题和单点查询问 ...
- 杰哥教你面试之一百问系列:java多线程
java多线程是java面试中的高频问题,如何才能在面试中脱颖而出呢?熟读这里的一百个java多线程面试问题即可. 1. 什么是线程?什么是进程? 回答: 线程是操作系统能够进行调度的最小执行单位,它 ...
- Excel单元格快速交换相邻位置内容
一.相邻两列内容交换(A1与B1交换)1.首先选择A1单元格的边框位置,出现了向上下左右的十字标志 2.此时按住shift键,并且拖向B1单元格的右边,出现"工"汉字标志 3.松开 ...
- 使用Springboot+SpringCloud+Seata1.3.0+Nacos1.2.1进行全局事务管理
一.官方文档网址 http://seata.io/zh-cn/docs/overview/what-is-seata.html Seata1.3.0开发组提供的开发文档 二.常见问题 2.1:网址: ...