• 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方便多了吧

  • 相关阅读:
    完美配置Tomcat的HTTPS
    ant的build.xml,引入第三方包
    Eclipse生成jar文件
    持续集成
    Java_Ant详解
    Python简介
    Python 2.7教程
    Eclipse和PyDev搭建完美Python开发环境(Windows篇)
    Jmeter4.0----正则表达式提取器(11)
    Jmeter4.0----设置集合点_并发(10)
  • 原文地址:https://www.cnblogs.com/juniorMa/p/14077959.html
Copyright © 2020-2023  润新知