zoukankan      html  css  js  c++  java
  • Arthas干货总结

    1 watch  

      watch com.suning.rdrs.admin.controller.RdrsDataCloudController obtainTargetFieldInfo '{params, throwExp}' -x 2

      格式:全限定名 + 空格 + 方法名 + 空格 + 固定写法 +  -x 2 是为了将结果展开

      

    返回值表达式实际是一个 ognl 表示,支持一些内置对象:

    • loader
    • clazz
    • method
    • target
    • params
    • returnObj
    • throwExp
    • isBefore
    • isThrow
    • isReturn

    watch命令支持按请求耗时进行过滤:

    Copy
    watch com.example.demo.arthas.user.UserController * '{params, returnObj}' '#cost>200'
    Arthas在 watch/trace 等命令时,实际上是修改了应用的字节码,插入增强的代码。显式执行 reset 命令,可以清除掉这些增强代码 

    2 jvm

    jvm 命令可以打印 JVM 的各种信息   重点信息 

     我们控制台系统的信息 

    THREAD
    -------------------------------------------------------------------------------------------------------
    COUNT 264
    DAEMON-COUNT 124
    PEAK-COUNT 275
    STARTED-COUNT 3184
    DEADLOCK-COUNT 0

    • COUNT: JVM 当前活跃的线程数
    • DAEMON-COUNT: JVM 当前活跃的守护线程数
    • PEAK-COUNT: 从J VM 启动开始曾经活着的最大线程数
    • STARTED-COUNT: 从 JVM 启动开始总共启动过的线程次数
    • DEADLOCK-COUNT: JVM 当前死锁的线程数

    3  ognl

      ognl '@demo.MathGame@random'

    4  trace

      方法内部调用路径,并输出方法路径上的每个节点上耗时

    $ trace demo.MathGame run
    Press Ctrl+C to abort.
    Affect(class-cnt:1 , method-cnt:1) cost in 42 ms.
    `---ts=2018-12-04 00:44:17;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
        `---[10.611029ms] demo.MathGame:run()
            +---[0.05638ms] java.util.Random:nextInt()
            +---[10.036885ms] demo.MathGame:primeFactors()
            `---[0.170316ms] demo.MathGame:print()

    5  stack

      输出当前方法被调用的调用路径

    很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。

      $ stack demo.MathGame primeFactors '#cost>5' Press Ctrl+C to abort. Affect(class-cnt:1 , method-cnt:1) cost in 35 ms. ts=2018-12-04 01:35:58;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 @demo.MathGame.run() at demo.MathGame.main(MathGame.java:16)

    6  thread

      thread 线程号 

      打印线程栈,这个可比jstack方便多了吧

  • 相关阅读:
    2021冬季学期有感与评价
    Scala变量和数据类型
    Scala运算符
    pytorch基本使用
    Vue组件
    Scala函数式编程
    Python中的运算符
    Scala流程控制
    Scala环境搭建
    用于测试GRPC服务的UI工具BloomRpc
  • 原文地址:https://www.cnblogs.com/juniorMa/p/14077959.html
Copyright © 2011-2022 走看看