线上问题定位分析宝典——Arthas篇

1 Arthas介绍

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

Arthas 用户文档:https://arthas.aliyun.com/doc/

对于如何使用Arthas官方文档做得非常详细,本篇主要内容概要:

  1. 对Arthas命令按作用对象进行了分类
  2. 对于典型故障场景,分享如何使用Arthas查找问题原因并使用Arthas救火。
  3. 分享如何使用arthas获取Spring context容器并获取项目中的bean。
  4. 最后分享实例即将OOM时,如何使用Arthas清理无用的全局对象,以避免OOM。

 

2 常用命令归类

arthas有40多个工具命令,下面列出的是处理问题常用的工具

看板

dashboard

线程栈

thread

方法相关

watch、trace、stack、tt、monitor、sm

类相关

getstatic、sc、jad、classloader、dump

日志调整

logger

jvm相关

jvm、sysenv、sysprop、jvmoption、perfcounter、heapdump、mbean

手动运行静态方法

ognl

热更新代码

mc、redefine/retransform

 

2.1 线程(thread)

参数名称

参数说明和用途

示例

id

查看指定线程的堆栈

thread 1

[-n:]

指定最忙的前N个线程并打印堆栈

thread -n 5

[-b]

找出当前阻塞其他线程的线程

thread -b

[-i ]

指定cpu使用率统计的采样间隔,单位为毫秒,默认值为200

thread -i 2000

[--all]

显示所有匹配的线程

thread --all

thread命令局限性:

  1. 不能一次打印全部线程的stack,对于waitting状态的异常线程需要逐一查看堆栈。解决办法是使用jdk的jstack命令。

2.2 方法相关

命令

公共参数

你可能感兴趣的:(系统运维,java,后端,中间件,运维)