本文将演示如何通过ATP的Java线程栈分析功能,分析Java应用中线程的运行情况。
1. 生成数据源并上传至ATP
a. 使用JDK中自带的jstack命令创建Java应用的线程快照,如下:
# 生成线程快照并输出到 jstack.log
$ jstack <进程号> > jstack.log
b. 创建成功后,将文件上传至ATP并分析。
2. 使用ATP线程栈分析
下面以 spring-petclinic 应用为例,在这个项目启动后创建线程栈快照并上传至ATP进行分析。
以下是各视图的基本介绍。
视图选项 | 简介 |
基本信息 | 基本信息视图中包含:
同时会按照线程状态和类型对所有线程进行分类。 |
线程信息 | 线程信息视图中包含所有线程的信息:
说明 部分信息(如 CPU,Elapsed)只有在高版本的 JDK 中才会输出。 用户可以通过线程名、线程 id 等字段进行查找。 |
线程池 | 线程池视图基于线程名对所有线程进行分类,并按状态统计数量分布,可以用于协助排查线程泄漏相关的问题。 |
方法热度 | 方法热度视图使用火焰图可视化所有的线程栈,帮助开发者分析应用中可能存在的热点行为。 说明 火焰图是按照栈的数量进行聚合,越宽不一定代表是热点方法,比如很多线程阻塞在同一个Java方法上是正常的现象。 |
3. 结论
通过ATP Java线程栈分析功能,可以帮助开发者分析应用中线程的运行情况。
文档内容是否对您有帮助?