开发者学堂课程【线上问题排查利器 Alibaba Arthas(下):Monitor 监视命令】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/747/detail/13201
Monitor监视命令
内容介绍:
一、Monitor 监视命令作用
二、参数说明
一、Monitor 监视命令作用
学完类和类加载器之后,下面来学习一些更为核心的命令
本次课程要学习的是 Monitor,中文翻译过来是显示器、监视器的作用,它的作用是用来监视指定类中方法的执行情况。
这个方法要不停的执行,这样我们才能监视得到,在默认的情况下,Monitor 监视的时间是比较长的,默认是120秒监视一次,就是两分钟,每过两分钟监视一次他的情况,所以 Monitor 命令,不同与之前所学的命令,Monitor 是一种非实时返回的命令,非实时返回的意思就是命令输入以后,它不会立刻返回结果,而是要等到目标Java返回信息之后,才会把信息输出来,而且是不断的进行监视,直到用户按Q或者直到用户输入 Ctrl + C 退出来才可以,他现在的使用也是简单的,因为它的语法参数并不多。
作用:对匹配 class - pattern / method - pattern 的类、方法的调用进行监控。
monitor 命令是一个非实时返回命令,实时返回命令是输入之后立即返回
而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 Ctrl + C 为止。
二、参数说明
方法拥有一个命名参数[ c :],意思是统计周期( cycle of output ),拥有一个整型的参数值
class - pattern 类名表达式匹配
method - pattern 方法名表达式匹配
[ E :] 开启正则表达式匹配,默认为通配符匹配
[ c :] 统计周期,默认值为120秒
1.第一个是class - pattern
class - pattern就是类的类名,但是指输入类名也不行,这两个参数都要输,一个是类名,一个是方法的名字,是他匹配的一个方式,一般都是输全名,除了用类名和方法名的方式,也允许采用正则表达式的方式
2.-c的参数
默认情况下,不输出的话,是120秒要等很久,所以如果我们想快速得到监视的结果的话我们要根据情况,适当缩短时间(下面的例子将缩短到5秒),[c:]现在主要作用是cycle of output,cycle就是一个周期的意思,所以c也就翻译成cycle周期。
以下面举例来进行一次操作。
过5秒监控一次,类 demo . MathGame 中primeFactors方法
monitor -c 5 demo. MathGame primeFactors
下面来看一下我们的例子,数学游戏中的一个类,其中的一个方法叫primeFactors,接下来来操作一下,在一边数学游戏运行的情况下,另一边来执行。
Arthas非常人性化,你输入一个 monitor之后,它会自动补全,按table键补全,然后直接回车的话,什么都不会出来,所以要先给一个类的名字。当你记不清类的名字时,比如说先输入demo,不记得的话按table键,然后它就会自动给你补全,因为这个包里面只有这样一个类。
方法的话,比如说P开头的一个方法,忘记的话,输入一个p按table键,再按table键,就会把所有pri开头的方法列出来,所以说此时打起来就会很方便,再敲一个m键,再按一个table,它也会自动补全,那我现在监视的也就是这个方法,但是你现在如果只按照这个方法回车,监测到这个这个类里边有一个方法,总共花了九毫秒,但是你看到他们没有反应,因为这不是一个实时反应的命令,此时他默认的是120秒,也就是两分钟之后才会有反应。
这时候就要等待,现就先退出来,现在我们带一个参数-c,把它设置上五秒钟,五秒钟接收一次它的返回值,这时候再按回车,就可以看到这五秒钟之后会显示输出一个信息出来,然后再等五秒钟,又会显示输出了一次,再等五秒钟,他又会输出来一次,就是一直以这样的周期。
上图这个里边的意思是, 第一个参数timestamp是返回的时间,精确到秒,年月日时分秒;第二是 class,表示的是类名;那三个是method,表示的是监视的方法方法名;total,是指总共执行了多少次,调用的次数,如图正好是5次,因为这个程序是每一秒调用一次; success是指他执行成功的次数,这个里面有异常抛出,生成的数小于二的话,就会抛出来一个异常,一旦抛出一个异常就会被认为执行失败,否则成功的,所以这个里面显示的是执行成功的次数; fail 就是执行失败的次数,就是抛出异常的次数;还有一个 avg. rt ( ms ),以毫秒为单位是指平均执行的时间,指五次里面平均时间是多久;最后一个fail - rate,失败的概率失败率,总共失败了多少次,比如说五次失败三次,失败率就是60%。以上就是监视的情况。
监控的维度说明:
监控项 说明
Timestamp 时间截
class Java 类
method 方法(构造方法、普通方法)
total 调用次数
Success 成功次数
fail 失败次数
rt 平均耗时
fail - rate 失败率
小结monitor 命令的作用:
用来监视一个时间段中指定方法的执行次数,成功次数,失败次数,耗时等这些信息