菜单
开源

剖析类型和检测

剖析是理解和优化应用程序性能的重要工具。在 Pyroscope 中,各种剖析类型可以对应用程序的不同方面进行深入分析。本指南将探讨这些类型并解释它们对您的程序的影响。

剖析类型指代应用程序性能分析的不同维度,重点关注 CPU 使用率、内存分配或线程同步等特定方面。

Pyroscope 支持以下剖析类型

  • CPU(CPU 时间,墙钟时间)
  • 内存(分配对象,分配空间,堆)
  • 使用中的对象和使用中的空间
  • Goroutine
  • 互斥锁计数和持续时间
  • 阻塞计数和持续时间
  • 锁计数和持续时间
  • 异常

有关剖析类型的更多详细信息,请参阅了解 Pyroscope 中的剖析类型及其用途

按检测方法划分的剖析类型支持

您使用的检测方法决定了哪些剖析类型可用。您可以使用自动检测或手动检测。

使用 Grafana Alloy 进行自动检测

您可以使用 Grafana Alloy 收集器从应用程序发送数据。Alloy 支持使用 eBPF、Java 和 Golang 进行拉取模式的剖析。

有关更多信息,请参阅使用 Grafana Alloy 配置客户端发送剖析数据

下表列出了使用 Alloy 进行自动检测时可用的剖析类型。

剖析类型Go(拉取)JavaeBPF
CPU
分配对象
分配空间
使用中的对象
使用中的空间
Goroutine
互斥锁计数
互斥锁持续时间
阻塞计数
阻塞持续时间
锁计数
锁持续时间
异常
墙钟时间

使用 SDK 进行检测

使用 Pyroscope 语言 SDK 可以直接检测您的应用程序以进行精确剖析。您可以根据应用程序的特定需求自定义剖析过程。

有关语言 SDK 的更多信息,请参阅Pyroscope 语言 SDK

下表列出了基于语言 SDK 可用的剖析类型。

剖析类型Go(推送)Java.NETRubyPythonRustNode.js
CPU
分配对象
分配空间
使用中的对象是 (7.0+)
使用中的空间是 (7.0+)
Goroutine
互斥锁计数
互斥锁持续时间
阻塞计数
阻塞持续时间
锁计数
锁持续时间
异常
墙钟时间
是 (7.0+)

span 剖析支持的剖析类型

Pyroscope 可以与支持 OpenTelemetry 标准的分布式跟踪系统集成。这种集成允许您将跟踪与剖析数据关联起来,并查找跟踪 span 特定代码行的资源使用情况。

span 剖析仅支持 CPU 剖析类型。

支持以下语言