快速上手Arthas

news2024/11/30 8:43:18

目录

基本概述

安装方式 

基础指令

jvm相关指令

class/classloader相关指令

monitor/watch/trace相关指令 

 其他


基本概述

jconsole等工具都必须在服务端项目进程中配置相关的监控参数,然后工具通过远程连接到项目进程,获取相关的数据。这样就会带来一些不便,比如线上环境的网络是隔离的,本地的监控工具根本连不上线上环境。并且类似于Jprofiler这样的商业工具,是需要付费的。

那么有没有一款工具不需要远程连接,也不需要配置监控参数,同时也提供了丰富的性能监控数据呢?

阿里巴巴开源的性能分析神器Arthas应运而生。

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

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

安装方式 

如果速度较慢,可以尝试国内的码云Gitee下载。

wget https://io/arthas/arthas-boot.jar
wget https://arthas/gitee/io/arthas-boot.jar

 Arthas只是一个java程序,所以可以直接用java -jar运行。

除了在命令行查看外,Arthas目前还支持 Web Console。在成功启动连接进程之后就已经自动启动,可以直接访问 http://127.0.0.1:8563/ 访问,页面上的操作模式和控制台完全一样。

基础指令

退出当前 Arthas客户端,其他 Arthas客户端不受影响:

quit/exit

关闭 Arthas服务端,所有 Arthas客户端全部退出:

stop/shutdown

 查看命令帮助信息 :

help

打印文件内容,和linux里的cat命令类似:

cat

打印参数,和linux里的echo命令类似:

echo 

 匹配查找,和linux里的gep命令类似:

grep 

复制标隹输入到标准输出和指定的文件,和linux里的tee命令类似 :

tee 

返回当前的工作目录,和linux命令类似 :

pwd 

清空当前屏幕区域 :

cls 

 查看当前会话的信息 :

session

 重置增强类,将被 Arthas增强过的类全部还原, Arthas服务端关闭时会重置所有增强过的类:

reset 

输出当前目标Java进程所加载的 Arthas版本号:

version 

打印命令历史:

history 

 Arthas快捷键列表及自定义快捷键:

keymap 

jvm相关指令

当前系统的实时数据面板:

dashboard

查看当前JVM的线程堆栈信息:

thread 

查看当前JVM的信息:

jvm

查看和修改JVM的系统属性:

sysprop 

查看JVM的环境变量:

sysem 

查看和修改JVM里诊断相关的option:

vmoption 

查看当前JVM的 Perf Counter信息:

perfcounter 

查看和修改logger :

logger 

查看类的静态属性: 

getstatic 

执行ognl表达式: 

ognl 

 查看 Mbean的信息: 

mbean

类似jmap命令的 heap dump功能: 

heapdump dump java heap

class/classloader相关指令

sc 查看JVM已加载的类信息:
    -d 输出当前类的详细信息,包括这个类所加载的原始文件来源、类的声明、加载的Classloader等详细信息。如果一个类被多个Classloader所加载,则会出现多次
    -E 开启正则表达式匹配,默认为通配符匹配
    -f 输出当前类的成员变量信息(需要配合参数-d一起使用)
    -X 指定输出静态变量时属性的遍历深度,默认为0,即直接使用toString输出

sm 查看已加载类的方法信息
    -d 展示每个方法的详细信息
    -E 开启正则表达式匹配,默认为通配符匹配 

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

jad

内存编译器,内存编译.java文件为.class文件

mc 

加载外部的.class文件, retransform到JVM里

retransform 

加载外部的.class文件,redefine到JVM里

redefine

dump已加载类的byte code到特定目录 

dump 

classloader 查看classloader的继承树,urts,类加载信息,使用classloader去getResource
    -t 查看classloader的继承树
    -l 按类加载实例查看统计信息
    -c 用classloader对应的hashcode来查看对应的 Jar urls 

monitor/watch/trace相关指令 

monitor 方法执行监控,调用次数、执行时间、失败率
    -c 统计周期,默认值为120秒


watch 方法执行观测,能观察到的范围为:返回值、抛出异常、入参,通过编写groovy表达式进行对应变量的查看
    -b 在方法调用之前观察(默认关闭)
    -e 在方法异常之后观察(默认关闭)
    -s 在方法返回之后观察(默认关闭)
    -f 在方法结束之后(正常返回和异常返回)观察(默认开启)
    -x 指定输岀结果的属性遍历深度,默认为0

trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
    -n 执行次数限制

输出当前方法被调用的调用路径 

stack

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

tt

 其他

列出所有job

jobs

强制终止任务

kill

将暂停的任务拉到前台执行

fg

将暂停的任务放到后台执行

bg 

搜索满足条件的结果

grep 

将命令的结果去除ANSI颜色

plaintext 

按行统计输出结果

wc 

查看或设置Arthas全局开关

options 

使用async-profiler对应用采样,生成火焰图

profiler 

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

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

相关文章

快速查询的秘籍——B+树索引

页和记录的关系示意图 InnoDB根据主键查找数据的过程是什么? 没有索引的查找是什么?索引查找和通过主键查找有什么关系? 索引是解决什么问题的? 索引是解决定位数据页的,而不是定位一个页中的数据的,定位…

MATLAB绘制动画(一)质点动画

vx 100*cos(1/3*pi); vy 100*sin(1/3*pi); t 0:0.005:18; x vx*t; y vy*-9.8*t.^2/2; comet(x,y) 这里只是截取了最后的画面,正常运行时,可以看到从最高点向下落的动作。 想要了解这段代码,我们要知道comet函数的意义 这个函数可以沿着…

ChatGPT 发布重磅更新,插件系统即将上线!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 昨天凌晨,ChatGPT 为诸多 Plus 会员陆续开放了插件系统内测权限,申请比较早的用户,现在应该都能体验上最新的插件系统了。 为了让风暴来得更为猛烈&…

SQL在线刷题

牛客网学习SQL在线编程,牛客网在线编程,一共82道 用于实践的网站,在线运行SQL 目前43道,刷不动了,剩下的之后找机会搞 只记录有疑问的题目 简单 SQL196 查倒数第三 查找入职员工时间排名倒数第三的员工所有信息 …

js堆和栈

目录 关键句提取: 一、认识堆和栈 1、内存操作场景 2、数据结构场景 二、堆和栈的优缺点 1.栈(stack) 2.堆(heap) 3.总结: 三、堆和栈的溢出 四、 传值和传址 五、为什么会有栈内存和堆内存之分? 垃圾回收 标记清理 引用…

品牌控价的好处有哪些、品牌控价方法有哪些

今天和大家聊聊【品牌控价】,他们常会说到自己的产品有多好,经销商们体验完也说产品效果非常不错,价格在业内也是有很大优势,但是客户购买量和预期效果确有很大差距,难道我产品性价比这个高,还不能打动顾客…

一种不需要注册没有魔法使用ChatGPT的方法

关于我:关注AIGC、读书、成长和自媒体。加我微信:keeepdance,备注:chatgpt。进ChatGPT交流群。 如果你还没有使用过ChatGPT,那你来对了地方。文章结尾,我将提供一种能不需要梯子、不需要注册,无…

【数据结构.C】顺序表和单链表的增删查改

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

干货! CVPR:基于VDB的高效神经辐射渲染场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者介绍 严 涵 上海交通大学2019级人工智能专业本科生,研究兴趣主要是与NeRF相关的三维重建算法。 报告题目 基于VDB高效神经辐射渲染场 内容简介 01 NeRF NeRF的提出起初主要是为了解决新视⻆生成…

shell脚本常用的命令

管理文件内容的使用 一、sort命令二、uniq命令三、tr命令四、cut命令五、split命令六、paste命令七、eval命令 一、sort命令 sort命令是以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序,比较原则是从首字符向后,依次按ASCII码…

尚硅谷Vue配套资源

1.gitee地址: https://gitee.com/coderPatrickStar/Vue/tree/master/%E5%B0%9A%E7%A1%85%E8%B0%B7Vue%E9%85%8D%E5%A5%97%E8%B5%84%E6%BA%90 2.

Linux常用命令——id命令

在线Linux命令查询工具 id 显示用户的ID以及所属群组的ID 补充说明 id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需…

编译一个开源软件遇到的问题总结

一、开源软件Supra 需要编译一个开源的软件Supra,它需要的前置条件是: 1、cmake ≥ 3.4 2、gcc ≥ 4.8 or min. Visual Studio 2015 (Compiler needs to be supported by CUDA! For that, see the CUDA installation instructions.) 3、QT ≥ 5.5 4、TB…

infuluxdb时序数据库介绍

时序数据库(influxdb) InfluxDB是一个开源的、高性能的时序型数据库,在时序型数据库DB-Engines Ranking上排名第一。 下载地址:https://dl.influxdata.com/influxdb/releases/influxdb2-2.3.0-windows-amd64.zip 启动: CMD到解压…

游戏服务器被攻击怎么办

游戏服务器的安全是每个游戏开发者和管理员必须关注的问题。然而,尽管有各种防御措施,游戏服务器仍然可能受到攻击。小编将为您介绍游戏服务器被攻击的原因,并提供一些解决方案。 游戏服务器被攻击的原因 1. DDoS 攻击 DDoS 攻击是最常见的攻…

【SSA-LSTM】基于SSA-LSTM预测研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

CRM软件标准版和定制版有什么分别

CRM系统能够帮助企业管理客户互动,跟踪客户数据,实现业务流程自动化。很多企业不太了解,标准CRM软件和定制CRM软件的区别是什么,该如何选择?下面我们来说说定制CRM的优势。 什么是标准CRM软件? 标准CRM软…

计算机组成原理---第七章 外围设备习题详解版

(一)课本例题 (二)课后习题 1.计算机的外围设备是指除了CPU和内存以外的其它设备。 2.打印机根据印字方式可以分为击打式和非击打式两大类,在击打式类打印机中,只有针型打印型打印机才能打印汉字。 3.一…

Protein Cell:基于R语言的微生物组数据挖掘最佳流程(大众评审截止14号晚6点)...

Protein & Cell综述:基于R语言的微生物组数据挖掘的最佳流程 近日,中国农业科学院刘永鑫组联合南京农业大学袁军组在国际期刊 Protein & Cell (IF 15.3) 发表了题为”“The best practice for microbiome analysis using R”的综述论文&#xf…

辉哥带你学hive第一讲 hive基本介绍以及环境搭建

文章目录 1.Hive介绍1.1 hive 基本情况1.2 Hive架构原理1.3 Hive 安装1.4 元数据配置1.5 hive 服务部署1.6Hive常用交互命令1.6.1 Hive参数配置方式1.Hive介绍 1.1 hive 基本情况 hive基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表。 Hive是一个Hadoop客…