一、Arthas简介

Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程、主要通过交互式来完成功能。

https://arthas.aliyun.com/doc/stack.html

首先贴出官方文档,自己使用也不多,主要用于一次线上问题排查

二、运行

java -jar arthas-boot.jar ,运行Arthas

选择要粘附的进程,输入编号即可

使用以下两个命令其中一个查看java程序的进程号
ps -ef
jps

备注:也可以通过浏览器连接Arthas,只是执行命令的时候需要加--target-ip参数

三、dashboard

输入以下命令进入仪表盘,监控线程,内存状态,GC等信息

四、thread

打印全部线程:thread

打印最忙的前10条线程: thread -n 10

根据线程号打印: thread 20

找出阻塞其他线程的线程 注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持。
thread -b

如果响应慢,阻塞状态的线程比较多,我们需要重点关注

五、查看已经加载的类(如果没有代码权限,使用jad)

sc com.XXX.sgw.controller.*
sc com.XXX.controller.AccessLogController

六、追踪方法堆栈调用时间

跟踪方法内部调用,输出各个节点的耗时,主要用于响应慢的时候

trace comXXX.controller.api.ServiceGatewayV1Controller list
trace com.XXX.service.ServiceGatewayV1Service customizeQuery m -n 2 ,一般需要输出多次结果,所以这里可以通过-n指定结果数量

 

七、查看程序调用出入参

类似于debug,查看被测方法的参数和返回值

watch com.XXX.controller.api.ServiceGatewayV1Controller list "{params[0],params[1],returnObj}"
watch com.XXX.service.ServiceGatewayV1Service customizeQuery "{params[0],params[1],params[2],returnObj}"

八、回溯方法执行

下面关注:耗时、IS-RET为false表示失败

tt -t com.XXX.vo.PageVo getPageSize
tt -i 1037 -w "target.getPageSize()"

九、查看方法被调用路径

stack com.XXX.service.impl.PostgresqlServiceImpl customQuery

十、反编译线上代码

jad --source-only com.yingzi.data.sgw.controller.api.ServiceGatewayV1Controller
jad --source-only com.yingzi.data.sgw.controller.api.ServiceGatewayV1Controller getDataByAlgorithm

十一、以3秒为一个时间窗口,统计时间窗口内调用次数,成功次数,失败次数,平时RT时间。用于监控方法的执行情况
monitor -c 3 com.yingzi.data.sgw.controller.api.ServiceGatewayV1Controller list

十二、JVM

重点关注下死锁(DEADLOCK-COUNT,下面不为0,表示有死锁)

根据下面的栈信息,可以看到,这两个线程互相请求被对方占用未释放的资源导致了死锁。举个例子,现实中很少

十三、profiler(火焰图)

系统cpu高的时候,我们可以看系统调用,相比于perf命令,profiler的步骤要更简便点,

profiler start,启动,默认是生成cpu的火焰图,which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu

profiler stop,停止,可以看到生成的svg文件路径

Arthas常用功能及一次线上问题排查的更多相关文章

  1. 线上问题排查神器 Arthas

    线上问题排查神器 Arthas 之前介绍过 BTrace,线上问题排查神器 BTrace 的使用,也说它是线上问题排查神器.都是神器,但今天这个也很厉害,是不是更厉害不好说,但是使用起来非常简单.如果 ...

  2. Java线上问题排查神器Arthas实战分析

    概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发.测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂:而且deb ...

  3. Java线上问题排查思路及Linux常用问题分析命令学习

    前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...

  4. java:线上问题排查常用手段(转)

    出处:java:线上问题排查常用手段 一.jmap找出占用内存较大的实例 先给个示例代码: import java.util.ArrayList; import java.util.List; imp ...

  5. JVM 线上故障排查

    JVM 线上故障排查 Linux 1.1 CPU 1.2 内存 1.3 存储 1.4 网络 一.CPU 飚高 寻找原因 二.内存问题排查 三.一般排查问题的方法 四.应用场景举例 4.1 怎么查看某个 ...

  6. 【转】又一次线上 OOM 排查经过

    又一次线上OOM排查经过 最近线上一个服务又出现了频繁Full GC的情况,导致提供的业务经常超时.问题出现非常不稳定,经过两周的时候,终于又捕捉到了一次Full GC,于是联系运维做Heap Dum ...

  7. Java架构师线上问题排查,这些命令程序员一定用得到!

    Java架构师线上问题排查,这些命令程序员一定用得到! 线上问题排查,以下场景,你遇到过吗? 一.了解机器连接数情况 问题:1.2.3.4的sshd的监听端口是22,如何统计1.2.3.4的sshd服 ...

  8. JVM线上问题排查

    前言 本文介绍服务器内运行的 Java 应用产生的 OOM 问题 和 CPU 100% 的问题定位 1. 内存 OOM 问题定位 某Java服务(比如进程id pid 为 3320)出现OOM,常见的 ...

  9. BTrace:线上问题排查工具

    BTrace简介 GitHub地址:BTrace 下载地址:v1.3.11.3 官方使用教程:Btrace使用教程 使用场景 BTrace 是一个事后工具,所谓事后工具就是在服务已经上线了,但是发现存 ...

随机推荐

  1. AD学习总结

     一.常用快捷键总结 快捷键tab:显示放置的线.元器件.管脚等详细信息(可以修改) 快捷键p:打开放置内容:在元器件原理图中放置能容主要是线等(组合键p+w  启动 "线" 操作 ...

  2. Native方法的使用

    Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能. 可以将 ...

  3. java中时间的规范是按美国,SimpleDateFormat怎么处理

    题目3.2: 如果时间的规范是按美国,怎么处理? import java.text.ParseException;import java.text.SimpleDateFormat;import ja ...

  4. Python入门-内置对象函数

    1.callable() 查看函数知否可调用,可调用返回True,不可用返回False print("input函数:", callable(input)) #input函数: T ...

  5. 美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇

    大家好,这篇文章我们来聊下动态线程池开源项目(DynamicTp)的通知告警模块.目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启.告警阈值.告警间隔时间.平台等,具体代码请看core ...

  6. SpringMVC-自定义转换器

    1.定义转换器类实现Converter接口 import org.springframework.core.convert.converter.Converter; import java.text. ...

  7. 用asmlib方式创建oracle集群ASM磁盘(oracleasm)

    创建asm磁盘的几种方式 创建asm方式很多主要有以下几种 1.Faking方式 2.裸设备方式 3.udev方式(它下面有两种方式) 3.1 uuid方式 3.2 raw方式(裸设备方式) 4.as ...

  8. FastDFS分布式的文件系统从小白入门到企业实践打怪之路系列笔记 【运维实践】

    描述: FastDFS 是阿里的余庆大佬用 C 语言编写的一款开源的分布式文件系统(个人项目),它对文件进行管理.功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,适合中小文件(4KB ...

  9. php个人博客搭建第二阶段②

    网站正文部分:热门博客的推荐: html代码: <!-- 网站正文部分 -->     <div class="content">         < ...

  10. 运行npm install命令的时候会发生什么?

    摘要:我们日常在下载第三方依赖的时候,都会用到一个命令npm install,那么你知道,在运行这个命令的时候都会发生什么吗? 本文分享自华为云社区<运行npm install命令的时候会发生什 ...