线程转储分析
借助线程转储分析功能,简化性能问题的故障排除过程。该功能可提供多线程应用中的线程状态、堆栈跟踪及资源使用情况等深度洞察,帮助开发者高效识别并解决瓶颈和死锁问题。
使用场景:主动管理生产性能
利用 Site24x7 的线程转储分析功能,主动管理生产环境的性能。定期采集线程转储并分析数据,以识别瓶颈、解决死锁、监控垃圾回收并排查异常。通过火焰图和调用栈树等全面的分析工具,您可以在性能问题影响最终用户之前采取预防措施。及时处理性能问题,优化应用代码和资源使用,确保用户体验流畅。
线程转储指标
获取线程转储指标的步骤:
- 登录 Site24x7 Web 客户端。
- 导航至 APM > 选择您的应用 > 线程分析。

- 从线程转储列表中点击所需的线程转储。
通过访问以下标签页,可获取各类参数和指标:
线程数量摘要
此指标提供给定线程转储中所涉及线程的整体摘要。
总览部分按线程状态呈现百分比分布,包括 TIMED_WAITING、BLOCKED、RUNNABLE 和 WAITING。
堆栈长度图表按线程长度呈现百分比分布,例如 LESS_THAN_TEN、BETWEEN_TEN_TO_HUNDRED 和 MORE_THAN_HUNDRED。
线程名称分组图表显示线程转储中各线程组的分布情况,线程按名称进行分类。


下方部分按组展示各状态(阻塞、等待、可运行、限时等待)的线程总数。您可以点击任意数量进行进一步分析。

相同堆栈跟踪图表显示线程组的拆分情况,共享相同堆栈跟踪的线程将被归并为一组。
最后一部分列出了相同堆栈跟踪的详细信息。
传递关系图

传递关系图展示了多线程应用中线程之间的关联关系,有助于识别阻塞其他线程的主线程。点击所需线程名称,可查看对应的堆栈跟踪。
最近执行的方法

最近执行的方法标签页按降序显示已执行的方法,并附带对应的线程数及其百分比。
CPU 线程

CPU 线程标签页通过显示 CPU 占用最高的前五个线程及其堆栈跟踪,帮助您深入了解应用性能。
GC 线程

垃圾回收(GC)线程可提供应用内存管理的深度洞察,帮助快速识别并解决与 GC 相关的性能问题。
GC 线程标签页分别显示 GC_DAEMON 和 GC_TASK 的线程数。
死锁

当一组线程因每个线程都在等待另一个线程所持有的资源而无法继续执行时,就会发生死锁。
死锁标签页包含死锁详情及受影响线程的信息,包括各线程等待的资源及其状态。这些数据可用于通过释放资源或更改资源加锁顺序来解决死锁问题。
具体显示以下内容:
- 与死锁相关的线程名称和 ID。
- 死锁的图形化表示。
异常

多线程应用中可被处理的错误称为异常,使应用能够继续运行而不会崩溃。
异常标签页显示前五个异常线程及每个线程中使用的方法。
终结器线程

JVM 中的终结器线程负责在对象即将被垃圾回收前执行其 finalize() 方法,以便执行销毁前的清理操作。
终结器线程标签页显示一个传递关系图,指示哪些线程导致了终结器线程的阻塞。它有助于释放这些线程,以防止应用出现内存问题。
- 点击所需线程名称,可查看对应的堆栈跟踪。
- 图表上方的信息卡中包含故障排除提示。
火焰图

火焰图展示了各函数或代码段所占用时间的分布情况,每个水平条代表一个函数或代码段,其宽度表示线程数(即在其堆栈跟踪中调用该方法的线程数量)。这种可视化方式有助于识别需要改进和优化的区域,并精确定位复杂系统中的性能瓶颈。
调用栈树

调用栈树用于可视化多线程应用的性能,以层级结构呈现函数,展示函数间的控制流及其嵌套关系。它帮助开发者理解程序结构、调试代码、识别递归、分析依赖关系并追踪执行路径。
线程转储分析

线程转储分析标签页提供所选线程转储中的完整线程列表。该标签页中的添加筛选器选项允许您为线程转储分析添加多个搜索条件。
- 此标签页在您点击其他标签页中的查看完整堆栈跟踪选项之前处于隐藏状态。
- 分析完成后,您可以关闭此标签页。
