跳转至

Profiling


Profiling 通过对应用程序在 CPU、内存和 I/O 等方面的运行状态进行持续采样与数据采集,自动获取其性能剖析数据。采集到的数据通过火焰图进行实时可视化,清晰展示每一个方法、类和线程之间的调用堆栈关系与资源消耗占比,帮助开发者识别热点函数与效率瓶颈,为代码级性能优化提供数据支撑。

在 Profiling 查看器中,您可以:

  • 基于火焰图分析 Java、Python、Go、C/C++ 等不同语言应用的运行时动态性能数据,直观定位由低效算法、内存泄漏或不当 I/O 操作引起的性能问题;

  • 通过与链路(Trace)关联,获取到具体业务请求(Span)所对应的代码执行片段,实现从业务接口到具体方法的端到端性能追踪,精准定位优化方向。

前提条件

  1. 安装 DataKit
  2. 开启 Profiling 采集器

Profiling 数据上报后,您可通过查看器进行查询与分析,支持搜索筛选、快捷筛选、列自定义及数据导出等操作。

注意

Profiling 数据默认保存 7 天。

Profiling 详情页

性能

在详情页,自动进入“性能” tab 页,包含属性标签、性能火焰图以及运行信息。

若当前 Profile 文件体积超过 20MB,系统暂不支持在线解析。您可以下载文件至本地,使用专业分析工具进行查看。例如:

火焰图

Profiling 的核心是利用火焰图进行代码级性能剖析。火焰图能直观展示调用栈中各方法的执行时间或资源消耗分布。系统同时提供基于方法、类库、线程等多个维度的聚合数据分析视图,直接列出执行占比最高的热点方法,帮助快速聚焦核心性能问题。

分析能力支持多种编程语言,不同语言可观测的指标维度有所不同,例如:

分类 说明
CPU Time 每个方法在 CPU 上的运行时间
Wall Time 每个方法的花费耗时,其中包含在 CPU 上运行的时间,等待 I/O 的时间以及函数运行时发生的其他任何事情所花费的时间
Heap Live Size 仍在使用中的堆内存数量
Allocated Memory 每个方法分配的堆内存数量,包括后来被释放的分配
Allocations 每个方法进行的堆分配数量,包括后来被释放的分配
Thrown Exceptions 每个方法抛出的异常数
Lock Wait Time 每个函数等待锁的时间
Locked Time 每个函数保持锁的时间
Lock Acquires 每个方法获得锁的次数
Lock Releases 每个方法释放锁的次数

分类 说明
CPU Time 每个方法在 CPU 上的运行时间,其中包含服务的 Java 字节码和运行时操作耗时,不包含通过 JVM 调用本地代码耗时
Wall Time in Native Code 本地代码的采样次数。当代码在 CPU 上运行、等待 I/O 以及方法运行时发生的任何其他情况,都可能发生采样。其中不包含运行应用代码时涉及到的 Java 字节码调用
Allocations 每个方法进行的堆分配数量,包括后来被释放的分配
Allocated Memory 每个方法分配的堆内存数量,包括后来被释放的分配
Heap Live Objects 每个方法被分配到的存活对象数量
Thrown Exceptions 每个方法抛出的异常数量
Lock Wait Time 每个方法等待锁的时间
Lock Acquires 每个方法获得锁的次数
File I/O Time 每个方法花在文件读取和写入的时间
File I/O Written 每个方法写入到文件的数据量统计
File I/O Read 每个方法从文件中读取的数据量统计
Socket I/O Read Time 每个方法花在从 socket 中读取的时间
Socket I/O Write Time 每个方法花在写入 socket 的时间
Socket I/O Read 每个方法从 socket 读取的数据量统计
Socket I/O Written 每个方法写到 socket 的数据量统计
Synchronization 每个方法花在同步上的时间

快捷操作

  • 搜索:在类型选择框中,输入方法名关键字进行模糊搜索,从匹配结果中直接选择,可快速定位并聚焦查看特定方法;
  • 复制:在维度下,hover 可复制查看方法详情;
  • 点击选择:维度列表默认展示全部方法。点击任一方法,火焰图将聚焦显示该方法的调用路径;支持多选以对比多个方法的执行情况。再次点击已选方法即可取消选择,恢复全景视图。

运行信息

运行信息 tab 页,可查看对应编程语言运行时的关联字段及标签属性,包括进程参数、环境变量及系统标签等字段。您可以将任一标签作为筛选条件添加到查看器列表面板,快速过滤相关数据;也可直接复制标签内容,用于在日志或链路中进行关联查询。

链路关联 Profiling

当应用程序同时开启了 APM 链路追踪与 Profiling 采集后,系统支持在链路(Trace)层面关联性能剖析数据。在应用性能监测的链路详情页中,选中火焰图上任何一个 Span,即可查看在该业务请求执行时间段内,关联的代码方法调用列表及其 Wall Time 的耗时占比。

由此实现从一次慢业务请求直接定位到具体耗时方法的穿透式分析,并支持一键跳转至完整的 Profiling 详情页,查看该时间段内更全面的性能剖析数据(如 CPU、内存维度),进行深度根因调查。

点击查看 Profiling 详情可跳转到对应 Profiling 详情页查看具体的性能数据。

文档评价

文档内容是否对您有帮助? ×