学习arthas(六)增强命令
Arthas
1.monitor
(1)对匹配 class-pattern/method-pattern/condition-express的类、方法的调用进行监控。
(2)monitor 命令是一个非实时返回命令.
(3)实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 Ctrl+C 为止。
(4)服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 命令不会引起原有业务逻辑的改变。
时间戳(timestamp)、Java 类(class)、方法(构造方法、普通方法 method)()、调用次数(total)、成功次数(success)、失败次数(fail)、平均 RT(rt)、失败率(fail-rate)
(1)类名表达式匹配;
(2)方法名表达式匹配;
(3)条件表达式:
A:开启正则表达式匹配,默认为通配符匹配;
B:统计周期,默认值为 120 秒;
C:在方法调用之前计算 condition-express;
D:指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch];
(1)指定 Class 最大匹配数量;
(2)计算条件表达式过滤统计结果(方法执行完毕之后);
(3)计算条件表达式过滤统计结果(方法执行完毕之前);
2.watch
函数执行数据观测,让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。
watch 的参数比较多,主要是因为它能在 4 个不同的场景观察对象。
使用参考
(1)观察函数调用返回时的参数、this 对象和返回值;
(2)指定 Class 最大匹配数量;
(3)观察函数调用入口的参数和返回值;
(4)同时观察函数调用前和函数返回后;
(5)调整-x的值,观察具体的函数参数值;
(6)条件表达式的例子;
(7)观察异常信息的例子;
(8)按照耗时进行过滤;
(9)观察当前对象中的属性;
(10)获取类的静态字段、调用类的静态函数的例子;
(11)排除掉指定的类;
(12)不匹配子类;
(13)使用 -v 参数打印更多信息;
3.trace
方法内部调用路径,并输出方法路径上的每个节点上耗时。trace 命令能主动搜索 class-pattern /method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。
4.stack
输出当前方法被调用的调用路径。很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。
5.tt
方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测。
watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。
这个时候如果能记录下当时方法调用的所有入参和返回值、抛出的异常会对整个问题的思考与判断非常有帮助。
于是乎,TimeTunnel 命令就诞生了。
6.profiler
使用async-profiler生成火焰图。
profiler 命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图。
profiler 命令基本运行结构是 profiler action [actionArg]
7.jfr
Java Flight Recorder (JFR) 是一种用于收集有关正在运行的 Java 应用程序的诊断和分析数据的工具。它集成到 Java 虚拟机 (JVM) 中,几乎不会造成性能开销,因此即使在负载较重的生产环境中也可以使用。
jfr 命令支持在程序动态运行过程中开启和关闭 JFR 记录。 记录收集有关 event 的数据。事件在特定时间点发生在 JVM 或 Java 应用程序中。每个事件都有一个名称、一个时间戳和一个可选的有效负载。负载是与事件相关的数据,例如 CPU 使用率、事件前后的 Java 堆大小、锁持有者的线程 ID 等。
jfr 命令基本运行结构是 jfr cmd [actionArg]
注意: JDK8 的 8u262 版本之后才支持 jfr
默认在arthas里未找到该命令。
点赞
发表评论
-
1 验证码为Gif图片,共4个字符和4帧图像交替闪烁,循环闪烁;
-
2 验证码每搁1秒闪烁一次,每次只显示3个字符和1个问号;
-
3 验证码为动态图片,问号出现位置交替变化;
-
4 验证码输入不区分字母大小写,参考以下为A123的验证码:
① 示例图片中没有字符角度旋转;
② 示例图片中没有干扰线;
③ 示例图片中没有网址信息;
-
5 再三权衡,还是将问号字符去除了,后台登录入口我个人使用予以保留;
1 如果您觉得验证码很难接收的话,欢迎给我反馈,我会继续改善,见顶部菜单栏的
作者介绍;
2 访问我站的朋友十有八九都是IT技术类大佬,这样式的验证码看起来不至于太复杂;
3 此处验证码前身使用的是腾讯防水墙免费验证码组件,由于一些原因切换为个人自定义的验证码;
4 所爱隔山海,山海界可平,欢迎留言评论;
评论列表