跳转至

Profile


简介

Profile 支持采集使用 Java / Python 等不同语言环境下应用程序运行过程中的动态性能数据,帮助用户查看 CPU、内存、IO 的性能问题。

前提条件

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

数据查询与分析

Profile 数据上报到观测云工作空间以后,您可以通过 Profile 实时数据查看器了解您的程序代码性能。支持对 Profile 数据进行查询和分析,包括搜索与筛选、快捷筛选、添加显示列、数据导出等。

注意:Profile 数据默认保存 7 天。

时间控件

观测云查看器默认展示最近 15 分钟的数据,通过右上角的「时间控件」,您可以选择数据展示的时间范围。更多详情可参考文档 时间控件说明

搜索和筛选

在查看器搜索栏,支持关键字搜索、通配符搜索、关联搜索等多种搜索方式,支持通过 标签/属性 进行值的筛选,包括正向筛选、反向筛选、模糊匹配、反向模糊匹配、存在和不存在等多种筛选方式。更多搜索与筛选可参考文档 查看器的搜索和筛选

快捷筛选

在查看器快捷筛选,支持编辑“快捷筛选”,添加新的筛选字段。添加完成后,可以选择其字段值进行快捷筛选。更多快捷筛选可参考文档 快捷筛选

自定义显示列

在 Profile 查看器,默认查看“发生时间”、“服务名”、“环境”、“版本”、“主机”、“语言”以及“持续时间”,可通过「显示列」自定义添加、编辑、删除、拖动显示列。当鼠标悬停查看器显示列上时,点击「设置」按钮,支持对显示列进行升序、降序、向左移动列、向右移动列、向左添加列、向右添加列、替换列、添加到快捷筛选、添加到分组、移除列等操作。更多自定义显示列可参考文档 显示列说明

数据导出

在 Profile 查看器,您可以先筛选出想要的数据导出后进行查看和分析,支持导出到 CSV 文件、仪表板和笔记。

Profile 性能分析

点击 Profile 列表可查看对应的性能详情,包含属性标签、性能火焰图以及运行信息。

火焰图和维度数据分析

Profile 利用火焰图分析不同类型下代码方法级别的 CPU、内存或 IO 的使用情况,您可以非常直观的了解方法的执行性能和调用情况。同时 Profile 提供基于方法、库、线程等维度情况下的执行数据分析查看,更直观的显示执行占比较大的一些方法,更快的定位性能问题。

分类 说明
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 每个方法花在同步上的时间。

快捷操作说明

  • 搜索:您可以通过在「类型」右侧的选择框,输入关键字进行模糊搜索,选择框会列出匹配到的方法,直接选择您所需要查看的方法即可;
  • 复制:您可以在「维度」通过鼠标悬停复制查看方法详情;
  • 点击选择:「维度」默认全选,您可以点击选择查看一个或多个方法及其相关的火焰图信息。再次点击方法,即可恢复全选;

运行信息

在 Profile 详情页,点击查看「运行信息」,可以查看对应编程语言运行时的一些信息以及标签属性。支持将标签信息添加到查看器列表做筛选使用,支持复制标签内容进行查询搜索。

链路关联 Profile

当应用程序使用 ddtrace 采集器同时开启了 APM 链路追踪和 Profile 性能追踪数据采集后,观测云提供 Span 级别的关联查看分析。在应用性能监测的链路详情页,选中火焰图的 Span ,获取对应时间段的代码热点信息,直接查看该段时间内的代码方法调用列表和 Wall Time 的执行耗时和占比信息。方法列表支持递归查看方法调用的先后顺序以及执行时间情况。

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