• 内存排查(三)-使用arthas工具


    使用arthas工具

    arthas是Alibaba开源的Java诊断工具。arthas可以帮助我们解决一下问题:

    1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
    2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
    3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
    4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
    5. 是否有一个全局视角来查看系统的运行状况?
    6. 有什么办法可以监控到JVM的实时运行状态?
    7. 怎么快速定位应用的热点,生成火焰图?

    如果需要查看更多内容,请访问arthas官网

    监听java进程

    #监听某个进程,需要手动指定序列号
    java -jar arthas-boot.jar
    
    #按名称监听某个进程
    java -jar arthas-boot.jar --select com.Application
    

    命令执行结果如下:

    按名称监听某个进程

    dashboard命令

    使用dashborard命令可以动态查看查看java程序的线程信息,内存等信息。

    #查看pid对应的进程信息
    dashboard pid
    

    命令执行结果如下:

    dashboard

    thread命令

    使用thread命令可以查看线程的状态,线程的栈信息。

    #查看线程对应的栈信息
    thread pid
    

    命令执行结果如下:

    thread命令

    jad命令

    使用jad命令可以反编译class文件的信息。

    #反编译 class文件
    jad classname
    

    命令执行结果如下:

    jad命令

    monitor命令

    使用monitor命令可以监控方法的成功和失败执行次数,非实时返回。

    #-c表达循环周期,这里指定的是5s
    monitor -c 5 class method
    

    monitor命令

    trace命令

    使用trace命令,可以查看方法内部的调用路径和方法耗时,消耗时间最长的方法会用红色标记。

    trace class method 
    
    #次数调用限制
    trace class method run -n 1
    
    #执行时间调用限制
    trace class method run '#cost > 10'
    

    trace命令

    watch命令

    使用watch命令可以查看方法执行时的入参,返回值,异常等信息,并且也可以选择监听的时机,如方法执行之前,方法执行之后。

    #查看方法返回值
    watch class method returnObj
    
    #查看方法入参和返回值
    watch class method "{params,returnObj}"
    
    #查看异常时的方式信息
     watch class method "{params[0],throwExp}" -e
    

    watch命令

    heapdump命令

    我们可以使用heapdump来导出java程序的堆dump信息,导出来的hprof可以使用jhat命令和jvisualvm工具查看。

    heapdump filename.hprof
    

    heapdum命令

    异步任务

    #查看正在运行的任务
    jobs
    
    #将后台任务转为前台
    fg 序号
    
    #将前台任务转为后台
    bg 序号
    
    #后台执行任务,使用&
    trace class method &
    

    异步任务

    webConsole

    默认地址为:http://127.0.0.1:3658/。
    

    exit命令

    使用exit命令,即可退出arthas。

    jvm命令

    使用jvm命令,查看当前 JVM 的信息

    博主微信公众号

  • 相关阅读:
    noip模拟70
    noip模拟测试62
    noip模拟66
    noip模拟67
    noip模拟64
    QATF自动化测试框架
    自动化领域谁主沉浮
    TestComplete9.2增强支持 Embarcadero RAD Studio XE3、Ext JS
    QTP对SAP的支持
    如何将makefile构建的工程导入C++test?
  • 原文地址:https://www.cnblogs.com/chenhaoblog/p/13575034.html
Copyright © 2020-2023  润新知