常用Arthas命令

jad反编译

  • 检查线上代码是否修改成功,例如修改interface后看Jar包是否引入新的,或者代码是否最新的。
jad com.zhenai.counseling.business.provider.facade.supremecourse.RedeemRecordFacadeImpl
//反编译只展示源码
jad --source-only com.zhenai.counseling.business.api.service.supremecourse.impl.SupremeCourseServiceImpl

在这里插入图片描述

watch命令查看函数入参,返回值

watch  com.zhenai.counseling.business.provider.facade.supremecourse.RedeemRecordFacadeImpl canRedeem {params,returnObj}  -x 2
//按耗时过滤
watch com.zhenai.counseling.business.provider.facade.supremecourse.RedeemRecordFacadeImpl canRedeem {params,returnObj}  '#cost>200' -x 2
//调整-x的值,观察具体的方法参数值, 4 标识遍历的深度,比如返回值里面有对象也会被遍历处理,对象里面还有对象,继续递归
watch  com.zhenai.counseling.business.provider.facade.supremecourse.RedeemRecordFacadeImpl canRedeem {params,returnObj}  -x 4

在这里插入图片描述

ts=2021-07-06 16:21:05; [cost=12.879504ms] result=@ArrayList[@Object[][@Long[156],],@Boolean[false],
]
  • cost 标识耗时
  • result 是整个watch命令的返回,我们监控的是入参,返回值,其中object是入参,boolean是返回值,按照你设置{params,returnObj} 的顺序返回
  • 最常用的方法,用于微服务接口数据排查,当有多个provider接口调用时候,可以逐个排查每个provider是否正常

thread繁忙的n个线程

thread -n 5
//打印阻塞线程
thread -b

在这里插入图片描述

  • 打印出最忙的n 个线程的堆栈信息。
  • 这里的cpu使用率与linux 命令top -H -p 的线程%CPU类似,一段采样间隔时间内,当前JVM里各个线程的增量cpu时间与采样间隔时间的比例。
  • 可直接打印对应id thread id 即可,打印阻塞线程,在排查计算密集型引用导致的CPU资源不够情况下,排查具体那个业务线程耗CPU资源比较高。

系统相关

//查看当前JVM信息
jvm
//查看当前所有属性
sysprop
//查看当前环境变量
sysenv
//查看日志级别
logger

查看类的静态属性

getstatic com.zhenai.counseling.business.api.consumer.OnlinePayCallBackConsumer logger

在这里插入图片描述

  • 此处我用的Logger来做实验,实际生产中可以对具体类中的静态属性 进行监控,比如是一个Map,List等复杂数据结构,很好排查问题

sc 查看已经加载的类

//模糊查询改包下的类加载情况
sc com.zhenai.counseling.business.api.consumer.*
//打印类的详细信息
sc -d com.zhenai.counseling.business.api.consumer.OnlinePayCallBackConsumer

在这里插入图片描述

sm查看方法详细信息

sm -d com.zhenai.counseling.business.api.consumer.OnlinePayCallBackConsumer consume

在这里插入图片描述

方法调用监控

monitor -c 5 com.zhenai.counseling.business.api.service.supremecourse.impl.SupremeCourseServiceImpl courses

在这里插入图片描述

耗时检测神器trace

//方法内部调用链路的时间监控
trace com.zhenai.counseling.business.api.service.supremecourse.impl.SupremeCourseServiceImpl courses
//同样过滤耗时
trace com.zhenai.counseling.business.api.service.supremecourse.impl.SupremeCourseServiceImpl courses '#cost > 10'
  • 对方法调用链路上每个节点的时间进行监控,类似pingpoint的一个输出,检测超时接口必备神器

在这里插入图片描述

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

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

相关文章

关于分布式锁的面试题都在这里了

「我今天班儿都没上,就为了赶紧把这篇文章分布式锁早点写完。我真的不能再贴心了。」「边喝茶边构思,你们可不要白嫖了!三连来一遍?」引言为什么要学习分布式锁?最简单的理由就是作为一个社招程序员,面试的…

Git 15周年:当年的分道扬镳,成就了今天的开源传奇

4 月 7 日,全球最主流的版本控制系统 —— Git 迎来 15 周年纪念日,项目主要维护者 Junio C Hamano(滨野 纯) 先生发邮件庆祝了这一日子。我们知道,所有的软件项目在整个生命周期中都要经过不断迭代,在一个…

使用 docker 编译运行 abp 项目

在前面的两篇文章中,介绍了如何在华为鲲鹏架构及其Euler系统上运行dotnet core, 使用docker运行了默认的mvc模板项目,这篇文章继续介绍在docker中运行更复杂的dotnet core项目,这里以业内鼎鼎大名的abp vnext框架,版本 2.6 为例。…

数据结构与算法--数组中的逆序对

题目:在数组中的两个数字如果签名一个数字大于后面的数组,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 案例:输入数组{7,5,6,4}中一共有5个逆序对分别是{7,6},{7,5}&#x…

用了这么多年的泛型,你对它到底有多了解?

现代程序员写代码没有人敢说自己没用过泛型,这个泛型模板T可以被任何你想要的类型替代,确实很魔法很神奇,很多人也习以为常了,但就是这么有趣的泛型T底层到底是怎么帮你实现的,不知道有多少人清楚底层玩法,…

数据结构与算法--两个链表中第一个公共节点

链表中第一个公共节点 公节点定义:同一个节点在两个链表中,并不是节点值相同题目:输入两个节点,找出他们的第一个公共节点,节点定义如需 /*** 链表元素节点** author liaojiamin* Date:Created in 12:17 2021/3/5*/ …

ASP.NET Core技术研究-全面认识Web服务器Kestrel

因为IIS不支持跨平台的原因,我们在升级到ASP.NET Core后,会接触到一个新的Web服务器Kestrel。相信大家刚接触这个Kestrel时,会有各种各样的疑问。今天我们全面认识一下ASP.NET Core的默认Web服务器Kestrel。一、初识Kestrel首先,K…

数据结构与算法--二叉堆(最大堆,最小堆)实现及原理

二叉堆(最大堆,最小堆)实现及原理 二叉堆与二叉查找树一样,堆也有两个性质,即结构性质和堆性质。和AVL树一样,对堆的一次操作必须到堆的所有性质都被满足才能终止,也就是我们每次对堆的操作都必…

Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架

最美人间四月天,春光不负赶路人。在充满无限希望的明媚春天里,一路风雨兼程的.NET团队正奋力实现新的突破。根据计划,新一代基于WebAssembly 技术研发的前端SPA框架Blazor 将于5月19日在微软Build大会升空。目前,Blazor 的测试工作…

如何将 Azure 上的 Ubuntu 19.10 服务器升级到 20.04

点击上方蓝字关注“汪宇杰博客”导语Ubuntu 20.04 LTS 已经正式推出了。作为一名软粉,看到新版鲍叔毒瘤,我当然是激动万分,抱着批判的态度,第一时间很不情愿的更新了我的服务器。4月23日发布的 Ubuntu 20.04 是个 LTS 版。其 Linu…

我想快速给WPF程序添加托盘菜单

我想...1 简单要求:使用开源控件库在XAML中声明托盘菜单,就像给控件添加ContextMenu一样封装了常用命令,比如:打开主窗体、退出应用程序等TerminalMACS我在TerminalMACS中添加了托盘菜单,最终实现的托盘菜单效果&#…

【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务

在我的上一篇文章《在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度》,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务并使用它来按计划运行后台任务。不幸的是,由于Quartz.NET API的工作方式,在Quartz作业中使用Scoped依…