目录

1.安装使用

2.attach一个进程

3.常用命令的接触  dashboard   thread

4.jvm相关命令:sysprop  sysenv vmoption getstatic  ognl

5.class 和classloader相关的命令

阿尔萨斯的使用案例


用户文档:Arthas 用户文档 — Arthas 3.5.6 文档

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

  5. 是否有一个全局视角来查看系统的运行状况?

  6. 有什么办法可以监控到JVM的实时运行状态?

  7. 怎么快速定位应用的热点,生成火焰图?

  8. 怎样直接从JVM内查找某个类的实例?

1.安装使用

前提:Arthas是一个java的程序,运行前需保证机器上有正在运行的java进程,不然Arthas无法启动

下载Arthas :curl -O https://arthas.aliyun.com/arthas-boot.jar

启动Arthas:

java -jar arthas-boot.jar

安装在这个目录:

卸载Arthas:

 删除两个目录  一个是隐藏的.arthas,一个是logs

 

2.attach一个进程

先启动一个阿尔萨斯提供的java Demo进程

curl -O https://arthas.aliyun.com/math-game.jar

java -jar math-game.jar

然后启动阿尔萨斯去附着这个进程

如果说端口号被占用了 可以使用其他的断就号来执行:

可以用过网页来链接:ip:3658

当我杀死了Arthas粘附的那个java进程以后 Arthas就自动退出了

3.常用命令的接触  dashboard   thread

1.查看dashboard   主要是查看java虚拟机内存显示的一个情况

2.thread命令  查看当前线程信息,查看线程的堆栈

来获取到math-game进程的Main Class

参数名称 参数说明
id 线程id
[n:] 指定最忙的前N个线程并打印堆栈
[b] 找出当前阻塞其他线程的线程
[i <value>] 指定cpu使用率统计的采样间隔,单位为毫秒,默认值为200
[--all] 显示所有匹配的线程

显示出最繁忙的三个线程:thread -n 3

死锁:

查看某一种状态的线程:thread --state RUNNABLE

4.jvm相关命令:sysprop  sysenv vmoption getstatic  ognl

jvm

THREAD相关

  • COUNT: JVM当前活跃的线程数

  • DAEMON-COUNT: JVM当前活跃的守护线程数

  • PEAK-COUNT: 从JVM启动开始曾经活着的最大线程数

  • STARTED-COUNT: 从JVM启动开始总共启动过的线程次数

  • DEADLOCK-COUNT: JVM当前死锁的线程数

文件描述符相关

  • MAX-FILE-DESCRIPTOR-COUNT:JVM进程最大可以打开的文件描述符数

  • OPEN-FILE-DESCRIPTOR-COUNT:JVM当前打开的文件描述符数

sysprop命令 查看系统的属性

sysenv  查看当前JVM的环境属性(System Environment Variables)

vmoption  查看,更新VM诊断相关的参数

getstatic  查看静态类属性

ognl可以代替getstatic

参数名称 参数说明
express 执行的表达式
[c:] 执行表达式的 ClassLoader 的 hashcode,默认值是SystemClassLoader
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name
[x] 结果对象的展开层次,默认值1

调用静态函数:

获取静态类的静态字段:

执行多行表达式,赋值给临时变量,返回一个List:

5.class 和classloader相关的命令

sc:search class命令  查看JVM已加载的类信息

阿尔萨斯的使用案例

netstat -tnlp |grep 9527  查看进程运行的端口号

1.哪个controller处理了请求,

我们可以快速定位一个请求是被Filter拦截的,或者请求最终是由哪个servlet处理的,我们可以精确定位是哪个Controller处理了请求

使用trace命令,trace org.springframework.web.servlet.DispatcherServlet *  (按tab补齐)

当我们找到了这个耗时最长的方法后我们接下里要做的就是反编译

jad --source-only org.springframework.web.servlet.DispatcherServlet doDispatch

下一步我们会找什么呢?假设下一步我想知道这个方法的返回内容是什么该怎么办呢?

watch org.springframework.web.servlet.DispatcherServlet getHandler 'returnObj'

这样我们就找到了这个调用的处理器是哪一个了

接下来我们再来最终这个方法的入参和返回值是什么?

watch com.wx.springboot.controller.* *  '{params,retuenObj}'

将追踪的深度设置为两级

watch com.wx.springboot.controller.* *  '{params,retuenObj}' -x 2

Arthas(阿尔萨斯)的基本使用相关推荐

  1. 如何使用监控诊断工具Arthas(阿尔萨斯)

    Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load.内存.gc.线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参.异常,监测方法执行耗时 ...

  2. java诊断神器 arthas(阿尔萨斯)

    java诊断神器 arthas(阿尔萨斯) 官网地址:https://arthas.aliyun.com/doc/en/index.html 1.快速开始 1.1.windows版本安装 # 命令行输 ...

  3. Arthas(阿尔萨斯)使用

    Arthas(阿尔萨斯)使用 1.背景 2.Arthas 介绍 3.Arthas 使用场景 4. Arthas 如何使用 4.1 安装 4.2 demo 4.3 启动Arthas 4.4 用artha ...

  4. Arthas - 阿尔萨斯 - 入门使用(Arthas插件)

    很多时候,在线上的问题,我们都不方便去打印日志去看某个方法的入参.反参.异常,那这时候阿尔萨斯就可以很好的解决我们的燃眉之急了,简单使用一下. 安装 一般来说,arthas-boot.jar 这个ja ...

  5. Arthas : 在线分析诊断工具Arthas(阿尔萨斯)

    1.美图 2.背景 想学JDK自带的工具,BTrace然后,同事说这个过时了,但是我不是很相信,因为是JDK自带的工具,他推荐这个,于是我就来看看这个到底是什么东西. Arthas 是Alibaba开 ...

  6. 线上Debug神器--Arthas(阿尔萨斯)

    目录 一.Arthas环境准备 1.概述 2.运行环境要求 3.安装&卸载 二.Arthas命令学习 一.Arthas环境准备 1.概述 Arthas是Alibaba开源的Java诊断工具,深 ...

  7. 阿里重磅开源在线分析诊断工具Arthas(阿尔萨斯)

    github地址: Arthas English version goes here. Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Art ...

  8. 阿里arthas(阿尔萨斯)的linux安装和使用

    快速安装arthas curl -O https://alibaba.github.io/arthas/arthas-boot.jar 启动并监控一个java进程,在此之前先启动一个java程序,使用 ...

  9. 用 Arthas 神器来诊断 HBase 异常进程

    作者 | 介龙平,英文名 leo,码农一枚 [Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿] 1. 异常突起 HBase 集群的某一个 RegionServer 的 CPU 使用率 ...

  10. arthas 查看哪个方法调用最耗时_Arthas实战

    1.是什么?解决什么样的问题? Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决: 这个类从哪个 jar ...

最新文章

  1. 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析
  2. 免费申请Firefly-RK3288开源板
  3. 两个构件的重合点_初三物理易错点:你被眼睛欺骗了,那些『平面镜成像』中的困惑...
  4. android照片备份软件下载,照片备份云相册app下载-照片备份云相册下载V1.9安卓版-西西软件下载...
  5. java mysql 异步查询数据库_java 异步操作数据库
  6. 诺奖文章里面的动图绘制教程来了!!
  7. 数据结构链表代码_代码简介:链表数据结构如何工作
  8. 是引进外部函数吗_CALCULATE函数的最佳搭档:FILTER
  9. python tornade 表单和模板
  10. Atitit mysql数据库自定义异常在java里面的捕获与处理推荐标准与规范
  11. 数学建模国赛拿奖关键tips,错过这7条可能与国奖无缘!
  12. 51单片机与JQ8900语音播报模块
  13. js 金额格式化 和 转成人民币大写金额形式
  14. 证明:二阶导函数大于零时为凹函数
  15. Python 输出对齐
  16. 如何使用JQueryUI插件库
  17. android mysql 驱动_Java-使用com.mysql.jdbc.Driver的Android MySQL
  18. 机器人技术(5)AtdRobot无线手柄控制教程
  19. 欢迎使用CSDN-markdown编辑器噶梦想偶尔
  20. 影院服务器可以给投影机信号吗,投影机有哪些接口类型 投影机接口类型与连接知识【介绍】...

热门文章

  1. 一款令人印象深刻的FCPX插件:3D Photo Animator (3D照片动画制作器)
  2. 运营商手机号归属地查询
  3. 利用Nginx反向代理解决80端口复用(内网域名转发)问题
  4. 【论文阅读】4- 4-Points Congruent Sets for Robust Pairwise Surface Registration
  5. NS版块可下载资源综合(updated 2007.12.12)--百思论坛
  6. android sip服务器,android sip协议通话实现
  7. HTML学习笔记——各种居中对齐
  8. D3.js【学习一】
  9. hexo博客主题推荐
  10. “反百度”,正义?邪恶?