Arthas(阿尔萨斯)的基本使用
目录
1.安装使用
2.attach一个进程
3.常用命令的接触 dashboard thread
4.jvm相关命令:sysprop sysenv vmoption getstatic ognl
5.class 和classloader相关的命令
阿尔萨斯的使用案例
用户文档:Arthas 用户文档 — Arthas 3.5.6 文档
当你遇到以下类似问题而束手无策时,Arthas
可以帮助你解决:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
是否有一个全局视角来查看系统的运行状况?
有什么办法可以监控到JVM的实时运行状态?
怎么快速定位应用的热点,生成火焰图?
怎样直接从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(阿尔萨斯)的基本使用相关推荐
- 如何使用监控诊断工具Arthas(阿尔萨斯)
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load.内存.gc.线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参.异常,监测方法执行耗时 ...
- java诊断神器 arthas(阿尔萨斯)
java诊断神器 arthas(阿尔萨斯) 官网地址:https://arthas.aliyun.com/doc/en/index.html 1.快速开始 1.1.windows版本安装 # 命令行输 ...
- Arthas(阿尔萨斯)使用
Arthas(阿尔萨斯)使用 1.背景 2.Arthas 介绍 3.Arthas 使用场景 4. Arthas 如何使用 4.1 安装 4.2 demo 4.3 启动Arthas 4.4 用artha ...
- Arthas - 阿尔萨斯 - 入门使用(Arthas插件)
很多时候,在线上的问题,我们都不方便去打印日志去看某个方法的入参.反参.异常,那这时候阿尔萨斯就可以很好的解决我们的燃眉之急了,简单使用一下. 安装 一般来说,arthas-boot.jar 这个ja ...
- Arthas : 在线分析诊断工具Arthas(阿尔萨斯)
1.美图 2.背景 想学JDK自带的工具,BTrace然后,同事说这个过时了,但是我不是很相信,因为是JDK自带的工具,他推荐这个,于是我就来看看这个到底是什么东西. Arthas 是Alibaba开 ...
- 线上Debug神器--Arthas(阿尔萨斯)
目录 一.Arthas环境准备 1.概述 2.运行环境要求 3.安装&卸载 二.Arthas命令学习 一.Arthas环境准备 1.概述 Arthas是Alibaba开源的Java诊断工具,深 ...
- 阿里重磅开源在线分析诊断工具Arthas(阿尔萨斯)
github地址: Arthas English version goes here. Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Art ...
- 阿里arthas(阿尔萨斯)的linux安装和使用
快速安装arthas curl -O https://alibaba.github.io/arthas/arthas-boot.jar 启动并监控一个java进程,在此之前先启动一个java程序,使用 ...
- 用 Arthas 神器来诊断 HBase 异常进程
作者 | 介龙平,英文名 leo,码农一枚 [Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿] 1. 异常突起 HBase 集群的某一个 RegionServer 的 CPU 使用率 ...
- arthas 查看哪个方法调用最耗时_Arthas实战
1.是什么?解决什么样的问题? Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决: 这个类从哪个 jar ...
最新文章
- 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析
- 免费申请Firefly-RK3288开源板
- 两个构件的重合点_初三物理易错点:你被眼睛欺骗了,那些『平面镜成像』中的困惑...
- android照片备份软件下载,照片备份云相册app下载-照片备份云相册下载V1.9安卓版-西西软件下载...
- java mysql 异步查询数据库_java 异步操作数据库
- 诺奖文章里面的动图绘制教程来了!!
- 数据结构链表代码_代码简介:链表数据结构如何工作
- 是引进外部函数吗_CALCULATE函数的最佳搭档:FILTER
- python tornade 表单和模板
- Atitit mysql数据库自定义异常在java里面的捕获与处理推荐标准与规范
- 数学建模国赛拿奖关键tips,错过这7条可能与国奖无缘!
- 51单片机与JQ8900语音播报模块
- js 金额格式化 和 转成人民币大写金额形式
- 证明:二阶导函数大于零时为凹函数
- Python 输出对齐
- 如何使用JQueryUI插件库
- android mysql 驱动_Java-使用com.mysql.jdbc.Driver的Android MySQL
- 机器人技术(5)AtdRobot无线手柄控制教程
- 欢迎使用CSDN-markdown编辑器噶梦想偶尔
- 影院服务器可以给投影机信号吗,投影机有哪些接口类型 投影机接口类型与连接知识【介绍】...
热门文章
- 一款令人印象深刻的FCPX插件:3D Photo Animator (3D照片动画制作器)
- 运营商手机号归属地查询
- 利用Nginx反向代理解决80端口复用(内网域名转发)问题
- 【论文阅读】4- 4-Points Congruent Sets for Robust Pairwise Surface Registration
- NS版块可下载资源综合(updated 2007.12.12)--百思论坛
- android sip服务器,android sip协议通话实现
- HTML学习笔记——各种居中对齐
- D3.js【学习一】
- hexo博客主题推荐
- “反百度”,正义?邪恶?