暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Arthas实践--快速排查性能耗时

懒人实录 2021-09-22
4593

    Arthas 是Alibaba开源的Java诊断工具,支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

一、启动arthas

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
复制

注意:使用和目标进程一致的用户启动,否则可能attach失败

启动成功需要选择监控的服务

选择1 监控 math-game.jar这个服务

二、dashboard当前系统的实时数据面板,获取线程ID

数据说明:

ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应。

NAME: 线程名

GROUP: 线程组名

PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高

STATE: 线程的状态

CPU%: 线程的cpu使用率。比如采样间隔1000ms,某个线程的增量cpu时间为100ms,则cpu使用率=100/1000=10%

DELTA_TIME: 上次采样之后线程运行增量CPU时间,数据格式为秒

TIME: 线程运行总CPU时间,数据格式为分:秒

INTERRUPTED: 线程当前的中断位状态

DAEMON: 是否是daemon线程

三、thread当前线程信息,查看线程的堆栈

参数说明:

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

thread 也能获取到线程ID

thread id, 显示指定线程的运行堆栈

四、trace获取方法内部调用路径,并输出方法路径上的每个节点上耗时

参数说明:

参数名称参数说明
class-pattern类名表达式匹配
method-pattern方法名表达式匹配
condition-express条件表达式
[E]开启正则表达式匹配,默认为通配符匹配
[n:]
命令执行次数
#cost
方法执行耗时
trace demo.MathGame *
复制

返回结果树中primeFactors()中print()方法耗时最多 (#24代码行号)


文章转载自懒人实录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论