当前位置:   article > 正文

生产调试工具:Arthas 使用笔记_arthas生产调试

arthas生产调试

文章目录

简介

ArthasAlibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自动补全,可以方便的定位和诊断线上程序运行问题。

开源地址:https://github.com/alibaba/arthas

官方文档:https://arthas.aliyun.com/doc/

安装

安装分为全量安装和非全量安装,非全量安装会在第一次使用时自动下载依赖。

首先介绍全量安装方式:

  1. 安装zip和unzip

    [root@localhost ~]# yum install -y zip unzip
    
    • 1
  2. 下载全量安装包

    [root@localhost ~]# wget https://maven.aliyun.com/repository/public/com/taobao/arthas/arthas-packaging/3.3.6/arthas-packaging-3.3.6-bin.zip
    
    • 1
  3. 解压安装包

    [root@localhost ~]# unzip arthas-packaging-3.3.6-bin.zip -d /usr/local/arthas
    
    • 1
  4. 启动

    [root@localhost ~]# cd /usr/local/arthas/
    [root@localhost arthas]# java -jar arthas-boot.jar 
    [INFO] arthas-boot version: 3.3.6
    [INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
    
    * [1]: 42405 qixi-emp-1.0-SNAPSHOT.jar
      1
      [INFO] arthas home: /usr/local/arthas
      [INFO] Try to attach process 42405
      [INFO] Attach process 42405 success.
      [INFO] arthas-client connect 127.0.0.1 3658
      ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           
       /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'                          
      |  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.                          
      |  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |                         
      `--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'                          
                                                                                    
    
    wiki      https://alibaba.github.io/arthas                                      
    tutorials https://alibaba.github.io/arthas/arthas-tutorials                     
    version   3.3.6                                                                 
    pid       42405                                                                 
    time      2020-07-15 13:26:58
    
    [arthas@42405]$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

使用

dashboard: 概览程序的 线程、内存、GC、运行环境信息

thread: 查看所有线程信息

thread 12: 查看线程id为12的线程信息

thread -b: 查找死锁

sc: 查看已加载的类的信息

# 查看信息
[arthas@17178]$ sc com.qixi.emp.controller.EmpController 

# 查看类的详细信息
[arthas@17178]$ sc -d com.qixi.emp.controller.EmpController

# 支持模糊搜索
[arthas@17178]$ sc com.qixi.emp.controller.*

# 查看类的字段信息
[arthas@30154]$ sc -d -f com.qixi.emp.controller.EmpController
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

jad: 反编译类的信息

[arthas@17178]$ jad com.qixi.emp.controller.EmpController 
  • 1

ognl: 执行ognl表达式

官网说明:https://alibaba.github.io/arthas/ognl.html#ognl

示例:

# 调用静态函数(调用之后输出了方法的返回值)
[arthas@30154]$ ognl '@java.lang.System@out.println("Hello World")'
null
  • 1
  • 2
  • 3

getstatic: 查看类的静态属性的值

[arthas@30154]$ getstatic com.qixi.arthas.service.impl.TestServiceImpl hashSet
  • 1

heapdump: 把堆导出成一个文件

​ 然后就可以用java的图形化分析工具分析这个文件了

Java提供了jmap命令可到类似效果:

例如:

jmap -histo [pid] | head -20

查看占内存最高的对象类型(列出前20行)慎重使用,会导出堆内存,堆内存大的时候会使生产环境卡顿很久。

jmap -dump:live,format=b,file=pid.hprof [pid]
将java内存堆栈导出为一个文件

redefine: 热替换class

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/514746
推荐阅读
  

闽ICP备14008679号