美文网首页
Arthas学习一

Arthas学习一

作者: 裂开的汤圆 | 来源:发表于2020-12-27 23:30 被阅读0次

    官方文档

    https://arthas.gitee.io

    Arthas可以解决的问题

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

    Arthas下载安装启动

    https://arthas.gitee.io/download.html
    使用以下命令启动arthas时,需要有后台有Java进程在执行,先将IDEA启动即可。

    java -jar arthas-boot.jar
    

    attach java进程

    普通情况下,直接使用以下命令,然后选择相应的Java进程,就能attach到相应的进程。

    java -jar arthas-boot.jar 
    

    如果出现端口占用的情况,可以使用以下命令,指定新的端口

    java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
    

    通过浏览器链接arthas

    arthas支持web console,用户再attach成功之后,可以直接访问http://127.0.0.1:3658。
    默认情况下,arthas只listen 127.0.0.1,如果想从远程访问,可以使用--target -ip参数指定listen的IP

    准备工作

    去以下github地址将代码下载下来后执行

    1.启动arthas, attach进上述进程


    image.png

    常用命令-dashboard

    输入dashboard,会展示当前所有java线程的信息。

    image.png

    第一部分,显示JVM中运行的所有线程:

    • NAME: 线程名
    • GROUP: 所在线程组
    • PRIORIT: 线程优先级
    • STATE: 线程状态
    • %CPU: CPU占用率
    • TIME:线程执行时间
    • INTERRUPTU: 中断状态
    • DAEMON: 是否是守护线程

    第二部分,显示JVM内存使用情况:

    • Menory: 内存名
    • Used: 使用内存大小
    • max:最大可用内存
    • ussage: 内存使用率
    • GC: 垃圾回收相关

    第三部分,显示操作系统的信息以及Java版本号

    常用命令-thread

    可以通过thread命令来获取到arthas-demo进程的Main Class。
    thread 1会打印线程ID 1的栈,通常是main函数的线程。

    image.png

    常用命令- jad

    通过jad来反编译Main Class

    jad MathGame
    
    image.png

    常用命令-watch

    通过watch命令来查看函数的返回值

    watch 包名.类名 方法名 返回值
    watch MathGame primeFactors returnObj
    
    image.png

    退出arthas

    可以使用quit或exit命令退出,attach到目标进程上的arthas还会继续运行,端口会保持开放。

    如果想完全退出,可以执行stop命令。

    相关文章

      网友评论

          本文标题:Arthas学习一

          本文链接:https://www.haomeiwen.com/subject/tgwonktx.html