arthars在线诊断

news2025/2/25 21:39:41

官网地址: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)   修改字段值

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

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

相关文章

[python][学习]循环与嵌套---打印乘法口诀

打印乘法口诀表 打印乘法口诀表 按照规律可以直接用一个for循环进行实现 加就是显示字符串,没有加就是直接计算或者显示 for i in range(1,10): print(i,*,1,,i*1,end ) print(i,*,2,,i*2,end ) print(i,*,3,,i*3,end ) print(i,*,4,,i*…

STC 51单片机50——中断问题演示

// 功能要求&#xff1a;按下按钮后&#xff0c;Led的状态改变。 #include "reg51.h" sbit LedP1^0; sbit ButtonP3^2; //外中断0对应的引脚 void delay(unsigned char m) { unsigned char i,j,k; for(i0;i<m;i) for(j0;j<250;j) for(k…

JWT生成tonken验证+AOP拦截验证

JSON Web Token&#xff08;JWT&#xff09;是目前都在用的前后分离跨域验证规则。 JWT由3部分组成 Header——头部一般Base64URL编码&#xff0c;作用&#xff1a;声明token类型&#xff0c;声明token使用的加密算法。一般都是使用HMAC-SHA256或者RSA支持很多种算法&#xf…

岩藻多糖-聚乙二醇-刀豆球蛋白A,ConcanavalinA-PEG-Fucoidan,刀豆球蛋白A-PEG-岩藻多糖

岩藻多糖-聚乙二醇-刀豆球蛋白A&#xff0c;ConcanavalinA-PEG-Fucoidan&#xff0c;刀豆球蛋白A-PEG-岩藻多糖 中文名称&#xff1a;岩藻多糖-刀豆球蛋白A 英文名称&#xff1a;Fucoidan-ConcanavalinA 别称&#xff1a;刀豆球蛋白A修饰岩藻多糖&#xff0c;ConA-岩藻多糖 …

分享从零开始学习网络设备配置--任务2.6 避免网络环路

任务描述 某公司最近由于业务迅速发展和对网络可靠性的要求&#xff0c;使用了两台高性能交换机作为核心交换机&#xff0c;接入层交换机与核心层交换机互联&#xff0c;形成冗余结构&#xff0c;来满足网络的可靠性&#xff0c;达到最佳的工作效率。 生成树技术&#xff08;S…

在一次又一次的失败中, 我总结了这份万字的《MySQL 性能调优笔记》

MySQL 性能调优学习导图》概要 说明&#xff1a;本文篇幅有限&#xff0c;故只展示部分内容&#xff0c;《MySQL 性能调优学习导图》资料已整理成文档&#xff0c;需要获取的小伙伴可以直接转发关注后私信&#xff08;学习&#xff09;即可获取哦 一、性能监控 1. 使用 show p…

2022/12/1 结构体

结构体 声明结构体&#xff1a; struct 结构体名 例如&#xff1a;struct student 其中&#xff0c;student又称为结构体标记 结构体可以拥有成员&#xff0c;例如&#xff1a; struct student { int num; int score; char name[20] }; 注意&#xff0c;分号不可以少…

万应低代码11月重点更新内容速递

速览版 详情版 低代码开发效率升级 1.页面变量支持快速构建 在「数据提交」、「调用逻辑」等存在数据返回的节点中&#xff0c;支持根据其输出的内容去自动创建数据类型相同的变量&#xff0c;并自动建立好映射关系。 ● 【功能上线前】&#xff1a; 需要为每一个输出字…

Elasticsearch_第一章_ elasticsearch基础

Elasticsearch_第一章_ elasticsearch基础 – elasticsearch基础 文章目录Elasticsearch_第一章_ elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技术&#xff1f;1…

企业该如何选择自己合适的云财务软件?

据相关数据统计&#xff0c;2021年&#xff0c;我国云服务市场规模达274亿美元&#xff08;超1700亿元人民币&#xff09;&#xff0c;预计到2026年将增长至850亿美元&#xff08;约5400亿元人民币&#xff09;。可见&#xff0c;云服务市场的发展之迅。对于企业而言&#xff0…

python入门项目03:完成黑心资本家发工资的程序

本题来源于黑马程序员b站视频&#xff0c;如有侵权&#xff0c;请联系删除。 import random #总金额10000 all_money10000 n0#记录发放工资的人 #发工资 for i in range(1,21):#20个员工jixiaorandom.randint(1,10)#生成一个1&#xff0c;10的随机数if jixiao<5:print(f员工…

12.1排序

目录 0.修改栈堆内存 一.堆排序 1 原理 2.代码实现 3.分析 二.冒泡排序 1 原理 2.实现 3.分析 三.快速排序(重要) 1 原理-总览 2.方法:挖坑法 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 3.代码实现挖坑法 4.分析 四.字符串转整数 1.字符串方法 2.字符…

【C++重点语法下】可变参数模板,STL里面的push_back和emplace_back区别 ,包装器function,bind

目录 1.可变参数模板 1.1取出参数包内的参数方法一&#xff1a; 1.2取出参数包内的参数方法二&#xff1a; 1.3STL里面的push_back和emplace_back区别 2.包装器function 2.1function&#xff08;头文件functional&#xff09; 2.1.1可调用类型和包装器 2.1.2类的成员函数…

实验十 符号计算基础与符号微积分(matlab)

目录 实验十 符号计算基础与符号微积分 1.1实验目的 1.3流程图 1.4程序清单 1.5运行结果及分析 1.6实验的收获与体会 1.1实验目的 1.2实验内容 符号计算基础与符号微积分 课本第372页 1.3流程图 1.4程序清单 实验十 1 clear xsym(6); ysym(5); z(1x)/(sqrt(…

第9章 登录页面的跳转实现

1 “swg-login.html”登录按钮不能触发异常 由于.Net框架默认支持“HTTPS”协议从而导致“swg-login.html”登录按钮不能触发&#xff0c;其异常信息如下&#xff1a;“Mixed Content: The page at https://localhost:7037/swg-login.html was loaded over HTTPS, but requeste…

FinalShell软件连接成功后,root文件夹显示一直加载中....

出现这样的问题就是因为我们一开始进入的用户是普通用户&#xff0c;然后你就会想着使用su命令转为超级用户&#xff0c;但是这样式不可行的&#xff0c;因为虚拟机会默认你第一次进入的用户是当前用户&#xff0c;还是解决不了问题。 解决办法&#xff1a; 再开一个连接进入…

java基于springboot_vue的校园闲置物品交易系统-计算机毕业设计

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven 本文从管理员、用户的功能要求…

Java(八)----多线程(二)

1. 生产者与消费者 1.1 安全问题产生 线程本身就是一个新创建的方法栈内存 (CPU进来读取数据) 线程的notify(),唤醒第一个等待的线程 解决办法 : 全部唤醒 notifyAll() 被唤醒线程,已经进行过if判断,一旦醒来继续执行 线程被唤醒后,不能立刻就执行,再次判断标志位,利用循环 …

[附源码]Python计算机毕业设计Django基于Vue的社区拼购商城

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Python学习日记-第三十八天-生成器

系列文章目录 生成器创建生成器的方法生成器-使用send方式唤醒使用yield完成多任务一、生成器 利用迭代器&#xff0c;我们可以在每次迭代获取数据&#xff08;通过next方法&#xff09;时按照特定的规律进行生成&#xff0c;但是我们在实现一个迭代器时&#xff0c;关于当前…