Java诊断神器:Arthas常用功能
最新原文:https://www.cnblogs.com/uncleyong/p/14944401.html
Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程、主要通过交互式来完成功能。
下面总结下工作中经常用到的功能。
运行
在执行java -jar arthas-boot.jar前,务必先保证有java进程在运行
选择要粘附的进程,输入编号即可,下面输入3
也可以通过浏览器连接arthas,只是执行命令的时候需要加--target-ip参数
dashboard
查看线程,内存,GC等信息
thread
显示粘附的这个进程所有线程信息,和dashboard里面展示的线程一样
thread -n 3,最繁忙的3个线程(占用cpu最多的前3个),输出栈信息
thread n,查看某个指定的线程,输出栈信息
thread -b,输出阻塞的线程栈信息,如果响应慢,阻塞状态的线程比较多,我们需要重点关注;关于线程的状态如何分析,后续再分享。
thread |grep BLOCKED,找出阻塞状态的线程,下面看到有2个
上面等价于thread --state BLOCKED
---------------------分割线,说明:下面是服务重启了,所以进程号和上面不一样---------------------------
jvm
重点关注下死锁(DEADLOCK-COUNT,下面不为0,表示有死锁),jvm相关的,用其它的监控方式
根据下面的栈信息,可以看到,这两个线程互相请求被对方占用未释放的资源导致了死锁
jad
如果没有代码权限,可以使用反编译功能,反编译指定的类或者方法
jad com.qzcsbj.controller.UserController mem,反编译指定方法,除了展示代码,还展示了类加载器的信息
jad com.qzcsbj.controller.UserController,反编译指定的类,除了展示代码,还展示了类加载器的信息
jad --source-only com.qzcsbj.controller.UserController,不显示类加载器信息,只显示代码
sc
Search Class,查看类信息(推荐jad)
sc com.qzcsbj.*,可以模糊的方式
sc -d com.qzcsbj.controller.UserController,根据上图结果,我们来查看类的详细信息
下面可以看到类的路径、修饰符、注解、父类、类加载器
sc -df com.qzcsbj.controller.UserController,查看类的filed,可以看到其名称、类型、修饰符
sm
Search Method,查看方法(推荐jad)
sm -d com.qzcsbj.controller.UserController mem,显示方法的详情:修饰符、注解、参数、返回类型
monitor以及tt
监控方法的执行情况
monitor com.qzcsbj.controller.UserController m -c 2,重点看成功次数、平均响应时间、失败率
和tt类似,下面关注:耗时、IS-RET为false表示失败
watch
类似debug,查看被测方法的参数和返回值
watch com.qzcsbj.controller.UserController login '{params, returnObj}' -x 2,其中-x表示深度
入参是qzcsbj/123456,返回是msg/code
trace
跟踪方法内部调用,输出各个节点的耗时,主要用于响应慢的时候
trace com.qzcsbj.controller.UserController m,找到耗时多的方法(下面标红的),然后我们就可以分析代码,看在执行什么操作了
trace com.qzcsbj.controller.UserController m -n 2,一般需要输出多次结果,所以这里可以通过-n指定结果数量
trace com.qzcsbj.controller.UserController m '#cost>1000',如果输出结果次数比较多,我们还可以对耗时进行过滤
profiler(火焰图)
系统cpu高的时候,我们可以看系统调用,相比于perf命令,profiler的步骤要更简便点,
profiler start,启动,默认是生成cpu的火焰图,which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu
profiler stop,停止,可以看到生成的svg文件路径
浏览器访问
关于如何看火焰图,我们看顶层最宽的。
补充
在做性能测试的时候,针对java应用,单纯靠arthas还是不够的,下面这些知识也需要掌握。
最新原文:https://www.cnblogs.com/uncleyong/p/14944401.html
https://mp.weixin.qq.com/s/YUFAAyhCPgSb5WrJm_LWFA
Java诊断神器:Arthas常用功能的更多相关文章
- java 诊断工具——Arthas
该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql! 接下来!今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 ja ...
- Java诊断利器Arthas
1 简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 ...
- Java 诊断工具 Arthas 教程学习笔记
Java 诊断利器 Arthas,是阿里的一款开源工具.Github-alibaba/arthas 上可以看到它的介绍.了解它,主要是最近对分析 Java 错误堆栈比较感兴趣,机缘巧合看到了它. 本文 ...
- Alibaba Java诊断工具Arthas之快速安装和简单使用
Alibaba Java诊断工具Arthas简单介绍 : 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...
- Java诊断工具Arthas
Java诊断工具Arthas 1. Arthas简介 Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类.昨天试用了一下,发现真是强大,解决了我工作两年的很多 ...
- 【Java】15分钟快速体验阿里Java诊断工具Arthas
[墙裂推荐]15分钟快速体验阿里Java诊断工具Arthas : https://alibaba.github.io/arthas/arthas-tutorials?language=cn&i ...
- Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas
Arthas 用户文档 — Arthas 3.1.0 文档https://alibaba.github.io/arthas/ alibaba/arthas: Alibaba Java Diagnost ...
- JAVA基础语法:常用功能符以及循环结构和分支结构(转载)
3.JAVA基础语法:常用功能符以及循环结构和分支结构 1.常用功能符 注释 ("文字"是被注释的部分) //文字 单行注释 /文字/ 多行注释 算术运算符 + - * / / 整 ...
- 阿里JAVA诊断工具Arthas的初步使用
Arthas 是Alibaba开源的Java诊断工具,主要解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 comm ...
随机推荐
- 《剑指offer》面试题25. 合并两个排序的链表
问题描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...
- Javascript中常用事件集合和事件使用方法
Javascript中常用事件集合和事件使用方法 一.事件绑定 格式: 事件源 . on事件类型=事件处理函数 事件绑定三要素 1.事件源:和谁绑定 2.事件类型:什么事件 3.事件处理函数:触发了要 ...
- 【刷题-LeetCode】209. Minimum Size Subarray Sum
Minimum Size Subarray Sum Given an array of n positive integers and a positive integer s, find the m ...
- 【刷题-LeetCode】165 Compare Version Numbers
Compare Version Numbers Compare two version numbers version1 and version2. If *version1* > *versi ...
- 看看CSDN的吃相
大伙快来看看CSDN的吃相.
- Cesium1.70-介绍CesiumOSM建筑新特性
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 我们很高兴宣布Cesium OSM建筑,一个覆盖整个世界的3D建 ...
- 通俗易懂详解iptables
防火墙相关概念 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网. ...
- 3D建模服务提供更高效、专业的3D制作能力,“筑”力开发者
3D建模服务(3D Modeling Kit)是HMS Core在图形图像领域又一技术开放.3D建模产品的定位就是要做快速.简洁.低成本的3D制作能力,并陆续开放给有3D模型.动画游戏制作等能力诉求的 ...
- java多线程中同步的问题?
一.通过模拟网络延迟,解决同步的问题. package com.zxf.demo; public class G01 implements Runnable{ private int num=10; ...
- 做开源界的MATLAB,PyMiner 需要更多热爱开源的你加入
MATLAB 和 Mathematica.Maple 并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB 可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其 ...