zoukankan      html  css  js  c++  java
  • 内存排查(三)-使用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 的信息

    博主微信公众号

  • 相关阅读:
    QT 中如何实现一个简单的动画
    qt 中画线时如何设置笔的颜色和填充
    QT自定义窗口
    qt 中创建一个工作线程(例子)
    QT 获取系统时间
    火狐浏览器 system error code 1722 rpc服务器不可用和谷歌浏览器的插件application/x-print-ladop不支持
    ORA-10858:在要求输入数字处找到非数字字符
    eaeyui-combobox实现组合查询(即实现多个值得搜索)
    Mybatis中的模糊查询
    如何设置像我这样的博客的样式。
  • 原文地址:https://www.cnblogs.com/chenhaoblog/p/13575034.html
Copyright © 2011-2022 走看看