在线安装Arthas以及常用命令介绍

news2025/1/13 13:39:02

Arthas介绍:arthas(阿尔萨斯)是阿里巴巴开源的一款 Java 诊断工具,它可以对运行中的 Java 程序进行实时监控和故障排查。Arthas 提供了丰富的功能,如线程分析、内存分析、类加载分析等,帮助开发者快速定位问题并提高开发效率。

主要功能:

  1. 实时监控:查看 JVM 参数、系统参数、类加载情况等;
  2. 远程调试:通过 gdb 进行远程调试;
  3. 线程分析:查看线程状态、调用栈等;
  4. 内存分析:查看对象引用关系、GC 情况等;
  5. 类加载分析:动态修改类加载器、热部署等;
  6. 命令行操作:执行任意 shell 命令;
  7. 性能分析:查看方法耗时、CPU 使用率等。

工具:https://arthas.aliyun.com/

安装arthas

输入命令

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

启动

java -jar arthas-boot.jar

出现所有可监控的进程,输入要监控的进程,回车

执行监控进程后,若报错

可能原因为java环境变量配置不正确

输入 echo $JAVA_HOME 查看自己jdk环境变量与安装是否匹配

在刷新环境变量 source ~/.bash_profile

IDEA安装Arthas插件:作用自动生成对应命令

此时在代码中对应方法上右键会出现 Arthas Command 接着就可以选择右侧对应相关命令

常用命令

dashboard

作用:仪表板,类似于监控作用,输入q或者ctr+c退出

thread

作用:可以获取到当前虚拟机中内存堆栈信息

[n:] 指定最忙的前n个线程并打印堆栈

[b] 找出当前阻塞其他线程的线程

[i <value>] cpu占比统计采样间隔,单位毫秒

jad

作用:反编译源代码

输入jad:包名+类名

watch

作用:方法执行数据观测,让你能方便的观察到指定方法的调用情况。

能观察到的范围为:返回值、抛出异常、入参,通过编写OGNL 表达式进行对应变量的查看。

class-pattern 类名表达式匹配

method-pattern 方法名表达式匹配

express 观察表达式

condition-express 条件表达式

[b] 在方法调用之前观察 before

[e] 在方法异常之后观察 exception

[s] 在方法返回之后观察

[f] 在方法结束之后(正常返回和异常返回)观察 finally

[E] 开启正则表达式匹配,默认为通配符匹配

[x:] 指定输出结果的属性遍历深度,默认为 1

idea复制对应命令后,若接口被调用则会触发

观察demo.MathGame类中primeFactors方法出参和返回值,结果属性遍历深度为2。

dump

作用:将已经加载类的字节码文件保存到特定目录,默认路径

logs/arthas/classdump/

class-pattern 类名表达式匹配

[c:] 类所属class loader的hashcode

[E] 开启正则表达式匹配,默认为通配符匹配

将正在虚拟机中运行的程序的字节码文件保存在对应目录下

monitor

作用:监视指定类中方法的执行情况:用来监视一个时间段中指定方法的执行次数,成功次数,失败次数,耗时等这些信息

class-pattern 类名表达式匹配

method-pattern . 方法名表达式匹配

[E] 开启正则表达式匹配,默认为通配符匹配

[c:] 统计周期,默认值为120秒

eg:

过5秒监控一次,类demo.MathGame中primeFactors方法

monitor -C 5 demo.MathGame primeFactors

trace

作用:

trace 命令能主动搜索 class-pattern /method-pattern对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

观察表达式的构成主要由ognl 表达式组成,所以你可以这样写“{params,returnobj}",只要是一个合法的 ognl表达式,都能被正常支持。

很多时候我们只想看到某个方法的r大于某个时间之后的trace结果,现在Arthas可以按照方法执行的耗时来进行过滤了,例如trace *stringUtils isBlank‘#Cost>100’表示当执行时间超过100ms的时候,才会输出trace的结果。

watch/stack/trace这个三个命令都支持#cost耗时条件过滤

trace

作用:函数指定类的指定方法

执行2次 trace demo.MathGame run -n 2

大于0.5毫秒的方法 trace demo.MathGame run'#cost ›. 5'

tt

watch 星然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。

这个时候如果能记录下当时方法调用的所有入参和返回值、拋出的异常会对整个问题的思考与判断非常有帮助。于是乎,TimeTunnel 命令就诞生了。

time-tunnel时间隧道

记录下指定方法每次调用的入参和返回信息,并能对这些不同时间下调用的信息进行观测

常用命令:

-t

tt命令有很多个主参数,-t就是其中之一。这个参数表明希望记录下类 *Test 的print 方法的每次执行情况。

-n

当你执行一个调用量不高的方法时可能你还能有足够的时间用 CTRL+C 中断七 命令记录的过程,但如果遇到调用量非常大的方法,瞬间就能将你的JVM 内存撑爆。

此时你可以通过 -n 参数指定你需要记录的次数,当达到记录次数时 Arthas 会主动中断比命令的记录过程,避免人工操作无法停止的情况。

解决方法重载

tt -t *Test print params.length==1

通过制定参数个数的形式解决不同的方法签名,如果参数个数一样,你还可以这样写

tt -t *Test print 'params [1] instanceof Integer'

•解决指定参数

tt -t *Test print params [0].mobile=="13989838402"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动控制原理答案

题目 现有一个单位反馈系统的开环传递函数为 试对该系统进行以下分析。 1.基础分析 计算该系统的闭环传递函数。 2.稳定性分析 2.1 使用劳斯判据分析该系统的稳定性 2.2 使用MATLAB编程&#xff0c;计算该系统有关于稳定性分析的零、极点&#xff0c;分析其稳定性。 3.暂态性…

性能测试知多少---吞吐量

我们每天的生活中都在用水用电&#xff0c;我只会关心自己的水管是否有水&#xff0c;水压是否稳定&#xff0c;如果我们把水龙头拧到最大&#xff0c;还是一滴一滴的流水。那我们就要愤怒了&#xff0c;直接找房东问明情况。我们从来没想过去找自来水公司。我们每天都会上网&a…

【原创】java+swing+mysql宠物领养管理系统设计与实现

摘要&#xff1a; 生活中&#xff0c;有很多被人遗弃的宠物&#xff0c;这些宠物的处理成为了一个新的难题。生活中也有许多人喜欢养宠物&#xff0c;为了方便大家进行宠物领养&#xff0c;提高宠物领养管理的效率和便利性。本文针对这一问题&#xff0c;提出设计和实现一个基…

Matlab上机三(Apriori算法)

1、题目要求 &#xff08;1&#xff09; 读取给定的交易数据库test3.txt&#xff0c;将整个交易数据库表示为一个矩阵&#xff0c;每个元组表示成一个行向量&#xff0c;向量长度为4。其中&#xff0c;一个项目出现在这个元组中&#xff0c;则相应位置设为1&#xff0c;否则为…

比亚迪被曝 24 小时收到 12 万份简历?

众所周知&#xff0c;今年找工作的难度都相当大&#xff0c;不论是应届毕业生还是经验丰富的职场人士&#xff0c;都面临相同的困境。然而&#xff0c;没想到情况居然如此糟糕&#xff0c;着实让人震惊。 最近&#xff0c;比亚迪公司被曝收到了12万份简历&#xff0c;简历投递…

深度学习框架TensorFlow.NET环境搭建1(C#)

测试环境 visual studio 2017 window10 64位 测试步骤如下&#xff1a; 1 新建.net framework控制台项目&#xff0c;工程名称为TensorFlowNetDemo&#xff0c;.net framework的版本选4.7.2&#xff0c;如下图&#xff1a; 2 分别安装TensorFlow.NET包(先装)和SciSharp.…

分治法——找众数

分治法——找众数 要求&#xff1a; 寻找整数数组的众数&#xff0c;如果存在多个众数&#xff0c;则返回权值最小的那个 第一步&#xff1a; 要利用分治法找众数&#xff0c;首先就先要使数组有序。这里&#xff0c;我们用C语言库中的qsort进行快排&#xff1a; qsort(nums…

Verilog HDL语言基础知识

目录 Verilog HDL语言基础知识 6.1.2 Verilog HDL模块的结构 6.1.3 逻辑功能定义 6.2.1 常量 6.3 运算符及表达式 6.4.2 条件语句 Verilog HDL语言基础知识 先来看两个Verilog HDL程序。 例6.1 一个8位全加器的 Verilog HDL源代码 module adder8(cout,sum,ina,…

如何用 GPT-4 全模式(All Tools)帮你高效学习和工作?

「十项全能」的 ChatGPT &#xff0c;用起来感受如何&#xff1f; 之前&#xff0c;作为 ChatGPT Plus 用户&#xff0c;如果你集齐下面这五个模式&#xff0c;就会成为别人羡慕的对象。 但现在&#xff0c;人们更加期盼的&#xff0c;是下面这个提示的出现&#xff1a; 这个提…

Python---字符串中的count()方法

count()方法 主要功能&#xff1a;求子串在字符串中出现的次数 count 英 /kaʊnt/ v. &#xff08;按顺序&#xff09;数数&#xff1b;计数&#xff0c;点数目&#xff1b;把……算入&#xff0c;包括&#xff1b;重要&#xff1b;被允许&#xff0c;被接受&#xff1b;…

项目实战:新增@RequestMapping和@GetMapping和@PostMapping三个注解

1、RequestMapping package com.csdn.mymvc.annotation; import java.lang.annotation.*; Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Inherited public interface RequestMapping {String value(); }2、PostMapping package com.csdn.mymvc.annotation; im…

Java自学第5课:Java web开发环境概述,更换Eclipse版本

1 Java web开发环境 前面我们讲了java基本开发环境&#xff0c;但最终还是要转到web来的&#xff0c;先看下怎么搭建开发环境。 这个图就是大概讲了下开发和应用环境&#xff0c;其实很简单&#xff0c;对于一台裸机&#xff0c;win7 系统的&#xff0c;首先第1步&#xff0c;…

Makefile初识

目录 0.前期准备0.1、程序编译链接&#xff1a; 1.Makefile基础1.1、认识Makefile1.2、Makefile定义模式&#xff1a;(1) 定义模式&#xff1a;(2) 执行Makefile&#xff1a; 1.3、Makefile的变量(1) 变量定义&#xff1a;(2) **变量的赋值符**:(3) 自动化变量 1.4 伪目标1.5 文…

【C++】特殊类设计+类型转换+IO流

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

【QT5之QFtp模块】编译及使用

下载 传送门&#xff1a;https://github.com/qt/qtftp 或者 git clone https://github.com/qt/qtftp.git 下载ZIP&#xff0c;解压待用。 编辑 使用QtCreator打开qtftp.pro; 修改如下&#xff1a; qtftp.pro中&#xff0c;将第21行注释; src/qftp.pro中&#xff0c;将第4行…

JavaEE-博客系统3(功能设计)

本部分内容为&#xff1a;实现登录功能&#xff1b;强制要求用户登录&#xff1b;实现显示用户信息&#xff1b;退出登录&#xff1b;发布博客 该部分的后端代码如下&#xff1a; Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Ser…

微服务之初始微服务

文章目录 一、服务架构演变1.单体架构2.分布式架构 二、认识微服务三、总结四、微服务技术对比五、SpringCloud注意 一、服务架构演变 1.单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a; 架构简单部署成本…

【强化学习】17 ——DDPG(Deep Deterministic Policy Gradient)

文章目录 前言DDPG特点 随机策略与确定性策略DDPG&#xff1a;深度确定性策略梯度伪代码代码实践 前言 之前的章节介绍了基于策略梯度的算法 REINFORCE、Actor-Critic 以及两个改进算法——TRPO 和 PPO。这类算法有一个共同的特点&#xff1a;它们都是在线策略算法&#xff0c…

C++ map 的使用

下面的是关于 map 的介绍。来自 map - C Reference (cplusplus.com) 的翻译&#xff0c;您可以看也可以不看哈&#xff01; map 是关联容器&#xff0c;它按照特定的次序(按照 key 来比较)存储由键值 key 和值 value组合而成的元素。在 map 中&#xff0c;键值 key 通常用于排序…

使用腾讯云轻量服务器安装AList

新人有免费两个月试用轻量服务器&#xff0c;使用云服务器商自带的webshell登录&#xff1b; 我这儿用docker安装Alist&#xff0c;因为服务器没自带docker&#xff0c;所以具体安装docker centos7.0最快速安装docker的方法 通过 Docker 部署 Alist 命令&#xff1a; docke…