arthars在线诊断
创始人
2024-03-12 08:04:54

官网地址:https://arthas.aliyun.com/doc/quick-start.html#_6-

1.安装启动

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

2.选择对应进程编号+回车在这里插入图片描述3.watch命令

官网命令文档:https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-watch
作用:监控函数的输入、输出、异常等信息。
watch 命令定义了 4 个观察事件点,即 -b 函数调用前,-e 函数异常后,-s 函数返回后,-f 函数结束后(默认开启)
在 watch 命令的结果里,会打印出location信息。location有三种可能值:AtEnter,AtExit,AtExceptionExit。对应函数入口,函数正常 return,函数抛出异常。
-x:指定输出结果的属性遍历深度
-n:只执行多少次数
-e表示抛出异常时才触发

查看调用之前函数的结果以及函数调用之后的结果watch com.hqhp.jwt.utils.JwtUtil getFieldValue '{params,returnObj,throwExp}' -x 2

在这里插入图片描述

只有第一个参数小于0才会触发watch
watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2
查看响应异常信息
watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2
对监控方法耗时进行过滤(200单位ms)
watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2
查看函数运行前后当前对象属性,也就是函数所在class包含属性内容
watch demo.MathGame primeFactors 'target'
触发指定方法后,调用当前对象的属性
watch demo.MathGame primeFactors 'target.illegalArgumentCount'

4.trace命令

作用:能输出方法内部调用路径,并输出方法路径上的每个节点上耗时
场景:当出现耗时方法时,可通过此命令查看调用的其他方法耗时时间
捕捉到函数被调用了一次就退出监控

监控指定函数调用链路及耗时
trace com.hqhp.jwt.filter.JwtFilter isAccessAllowed
捕捉到函数被调用了一次就退出监控
trace com.hqhp.jwt.filter.JwtFilter isAccessAllowed -n 1
输入调用JDK内部函数信息
trace --skipJDKMethod false com.hqhp.jwt.filter.JwtFilter isAccessAllowed -n 1
只会展示耗时大于 10ms 的调用路径,有助于在只关注异常情况
trace com.hqhp.jwt.filter.JwtFilter isAccessAllowed '#cost > 10'
trace 多个类或者多个函数
trace -E com.test.ClassA|org.test.ClassB method1|method2|method3
排除掉指定的类
trace javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter

5.ognl命令

执行 ognl 表达式

获取静态变量
ognl '@demo.MathGame@random'
从spring容器中获取class中的变量
ognl '@com.zqh.bean.ApplicationUtil@getBean("classBean").str'
动态修改非静态属性值
ognl --classLoaderClass org.apache.catalina.loader.WebappClassLoader'#instence=@cn.com.maxtech.util.Maxtech@me.getBean("LedgerTimer"),
#fieldObj=@cn.com.maxtech.jswyj.ledger.timer.LedgerTimer@class.getDeclaredField("isOpen"),
#fieldObj.setAccessible(true),
#fieldObj.set(#instence,true)'1、--classLoaderClass org.apache.catalina.loader.WebappClassLoader 指定classload为tomcat的webappClassLoader(因为我们的springboot项目使用的外置tomcat)
2、#instence=@cn.com.maxtech.util.Maxtech@me.getBean("LedgerTimer") 从spring容器中拿到LedgerTimer类的实例放入一个变量instence中
3、#fieldObj=@cn.com.maxtech.jswyj.ledger.timer.LedgerTimer@class.getDeclaredField("isOpen") 使用反射获取LedgerTimer类的isOpen字段对象放入fieldObj变量中
4、#fieldObj.setAccessible(true)  由于isOpen字段没有设置public访问权限,所以需要执行此段代码放开访问权限
5、#fieldObj.set(#instence,true)   修改字段值

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...