简介

  • Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。
  • 官网地址:https://arthas.aliyun.com/
  • 它可以做什么,以下功能都是直接操作线上跑着的jar包!!!
  1. 反编译,查看线上某个程序的某个类的代码
  2. 查看 某类的某方法调用入参和异常
  3. 查看程序所有的线程、CPU消耗top n 的线程、阻塞的线程

暂时就举这几个例子吧

实战

  • 下载

ubuntu系统,shell连接到服务器,执行:

wget https://arthas.aliyun.com/arthas-boot.jar
  • 运行
java -jar arthas-boot.jar

arthas-bootArthas的启动程序,它启动后,会列出所有的Java进程,用户可以选择需要诊断的目标进程

红色部分翻译下来是:发现服务器存在的Java进程如下,请选择一个并输入编号,例如输入 1 ,然后敲回车,我这里选择的是 3 ,即运行在 16474 的 guanyu-server-minapp-1.0.0-SNAPSHOT-3d76140.jar

  • 操作
  1. 反编译

    # jad 类名(带路径)
    jad com.muiyou.api.InvoiceApi
  2. 查看某类某方法调用入参和异常 
    # watch +类名 +方法名 + '{params,throwExp}' -x 2
    # 方法名可以用 * 代指所有方法
    watch com.muiyou.web.AreaController save '{params,throwExp}' -x 2

    此时再访问该方法,就会打印入参,如果报错还会打印异常

  3. 查看线程相关 
    #查看所有线程
    thread #查看 CPU top n 的线程
    thread -n 数字 #查看5秒内 CPU top 3 的线程
    thread -n 3 -i 5000 #查看阻塞线程
    thread -b
  4. 退出 arthas 
    #退出
    exit 或者 quit #彻底退出
    stop

好了,就说这么多,有兴趣的可以访问官网自己探索别的功能~

比如 热更新代码~

arthas 简单使用的更多相关文章

  1. Alibaba Java诊断工具Arthas之快速安装和简单使用

    Alibaba Java诊断工具Arthas简单介绍 : 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...

  2. 使用java动态字节码技术简单实现arthas的trace功能。

    参考资料 ASM 系列详细教程 编译时,找不到asm依赖 用过[Arthas]的都知道,Arthas是alibaba开源的一个非常强大的Java诊断工具. 不管是线上还是线下,我们都可以用Arthas ...

  3. 线上应用调试利器 --Arthas

    在之前的文章中,我介绍了使用 Btrace 工具进行线上代码的debug (https://www.cnblogs.com/yougewe/p/10180483.html),其大致原理就是通过字节码注 ...

  4. Arthas进阶学习(常用命令)

    Step1 下载demo-arthas-spring-boot.jar,再用java -jar命令启动: wget https://github.com/hengyunabc/katacoda-sce ...

  5. Arthas开源项目

    本文主要围绕着Arthas是什么.能做什么.安装和使用等三个方面内容来讲解,希望对初学者和对此有兴趣的朋友有帮助. 一. Arthas是什么 文档地址: https://alibaba.github. ...

  6. Arthas Alibaba 开源 Java 诊断工具

    Arthas 用户文档 English Docs Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,A ...

  7. 初识阿里开源诊断工具Arthas

    上个月,阿里开源了一个名为Arthas的监控工具.恰逢近期自己在写多线程处理业务,由此想到了一个问题. 如果在本机开发调试,IDE可以看到当前的活动线程,例如IntelliJ IDEA,线程是运行还是 ...

  8. JAVA神操作--使用Arthas线上热更新实战

    热更不规范,同事两行泪 背景 C君是一个javaer,最近在开发用户登出接口的时候,不小心把接口参数拼错了 正确的是: /api/v1/user/logout?referrer=www.javaer. ...

  9. 使用Arthas 获取Spring ApplicationContext还原问题现场

    ## 背景 最近来了个实习僧小弟,安排他实现对目标网站 连通性检测的小功能,简单讲就是将下边的shell 脚本换成Java 代码来实现 ``` 1#!/bin/bash 2URL="http ...

随机推荐

  1. Using C++ in VS Code

    Using C++ in VS Code ‍ Get Started with C++ and Windows Subsystem for Linux in Visual Studio Code ‍ ...

  2. 第五课第四周笔记4:Transformer Network变压器网络

    Transformer Network变压器网络 你已经了解了 self attention,你已经了解了 multi headed attention.在这个视频中,让我们把它们放在一起来构建一个变 ...

  3. kivy画个半圆

    from kivy.uix.boxlayout import BoxLayout from kivy.app import App class BoxLayoutWidget(BoxLayout): ...

  4. .net,C#,Vb,F#,Asp,Asp.net区别以及作用和方向

    .net是平台,其他都是运行在其.NET FrameWork环境下的 C#,Vb都是语言运行在.net 平台下 Asp,Asp.net 都是用来写Web网页的,但是Asp和Asp.net有区别 Asp ...

  5. Prometheus基于Eureka的服务发现

    Prometheus基于Eureka的服务发现 一.背景 二.实现步骤 1.eureka 客户端注册到prometheus中 2.prometheus中的写法 3.实现效果 三.完整代码 四.参考链接 ...

  6. Prometheus基于文件的服务发现

    Prometheus基于文件的服务发现 一.基于文件的服务发现 1.prometheus.yml 配置文件的写法 2.file_sd 目录下的文件 3.配置结果 二.注意事项 三.参考链接 一.基于文 ...

  7. spring cloud中使用hystrix实现回退

    在微服务架构中,我们的服务被拆分成多个微服务,每个微服务完成自己的职责,微服务之间通过rpc或http进行调用.这个时候我们就要确保我们的服务高可用,但谁也说不准我们的服务能永远快速的提供服务.假如现 ...

  8. Python课程笔记(七)

    今天学习神奇的海龟,非常有意思,还有很多图片想去绘制,分享一个turtle绘图网站: https://www.python123.io/index/turtles/latest , 要是可以分享出源码 ...

  9. DeWeb 电脑和手机动态适配

    DeWeb 做多平台适配很方便! 多平台适配代码在OnMouseUp中. X,Y分别表示当前设备的Width/Height: Button : mbLeft : 屏幕纵向, mbRight:屏幕横向: ...

  10. Mac sourceTree每次都输入密码

    打开终端 依次输入以下三条命令 curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain - ...