不会吧?不会还有人不知道 Arthas 可以条件过滤进行 watch 吧?

前言

Arthas 的 watch 指令一直是我排查线上问题时使用最多的指令,没有之一。而按照条件进行 watch 也是很常见的一个需求,例如线上一个方法会有大量的调用,而我们可以按照指定的条件,watch 到我们希望观察的那一次调用。

说实话,我对 Arthas 也没有什么研究,一开始还真不清楚原来 Arthas watch 可以按条件过滤,翻看一下官方文档:https://arthas.aliyun.com/doc/watch#id6

条件表达式的例子

1
2
3
4
5
6
7
$ watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0"
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 68 ms.
ts=2018-12-03 19:36:04; [cost=0.530255ms] result=@ArrayList[
@Integer[-18178089],
@MathGame[demo.MathGame@41cf53f9],
]

lambda 表达式导致 Arthas 无法 redefine 的问题

原文出处:https://m.jb51.net/article/188155.htm

作者:鲁严波

这篇文章主要介绍了 lambda 表达式导致 Arthas 无法 redefine 的问题,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。

通过 arthas 的 redefine 命令,可以做到不用重新发布,就可以改变程序行为。

但是用多了,发现很多时候,我们就改了几行代码,甚至有的时候就添加了一行日志,就无法 redefine 了。提示:

redefine error! java.lang.UnsupportedOperationException: class redefinition failed: attempted to add a method


Arthas | 追踪线上耗时方法

前言

本文是 Arthas 系列文章的第三篇。

本文主要介绍 trace 指令,用于定位两种类型的问题:

  1. 线上服务 RT 比较高,但没有打印日志,无法确定具体是哪个方法比较耗时
  2. 线上服务出现异常,需要追踪到方法的堆栈

Arthas | 定位线上 Dubbo 线程池满异常

前言

本文是 Arthas 系列文章的第二篇。

Dubbo 线程池满异常应该是大多数 Dubbo 用户都遇到过的一个问题,本文以 Arthas 3.1.7 版本为例,介绍如何针对该异常进行诊断,主要使用到 dashboard/thread 两个指令。


Arthas | 热更新线上代码

前言

本文是我介绍 Arthas 系列文章的第一篇。

一般线上问题比开发环境的问题更难解决,一个主要的原因便在于开发态可以任意 debug 断点调试,而线上环境一般不允许远程调试,所以在实践中,我一般习惯用 Arthas 来定位线上的问题。

Arthas 是阿里巴巴开源的 Java 应用诊断利器

Arthas 可以完成很多骚操作,今天给大家介绍的 Arthas 诊断技巧便是 – 热更新线上代码。在生产环境热更新代码,并不是很好的行为,可能会引发一些问题

  • 黑屏化的操作可能会导致误操作
  • 不符合安全生产的规范,不满足可监控、可回滚、可降级

但有时候也有一些场景可以考虑使用 Arthas 来热更,例如开发环境无法复现的问题、找到修复思路后临时验证等。

本文以 Arthas 3.1.7 版本为例,主要使用到 jad/mc/redefine 三个指令。


Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×