关于 Cloud Profiler

众所周知,想要准确衡量生产系统的性能是十分困难的。在测试环境中衡量性能所做的尝试,通常无法准确再现生产系统面临的压力。对应用的一些部分进行微基准测试有时可行,但它通常也无法准确再现生产系统的工作负载和行为。

当服务在其工作环境中运行时,要探索 CPU 周期和内存等资源用在了何处,持续剖析生产系统的性能不失为一种有效方式。不过,性能剖析过程会给生产系统带来额外负载:要让用户接受这种探索资源耗用模式的方式,性能剖析过程带来的额外负载必须很小。

Cloud Profiler 是一个低开销的统计性能剖析器,可从生产应用中持续收集有关 CPU 使用率和内存分配情况的信息。它会将获得的信息归因于生成这些信息的源代码,从而帮助您识别应用中资源耗用量最大的部分,还可以阐明应用的性能特征。

可用的性能剖析类型

Cloud Profiler 支持基于编写程序所采用的语言来执行不同类型的性能剖析。下表汇总了各语言支持的性能剖析类型:

性能剖析文件类型 Go Java Node.js Python
CPU 时间
分配的堆
争用
线程
实际用时

如需查看语言要求和任何限制的完整信息,请参阅语言的“方法”页面。 如需详细了解这些性能剖析文件类型,请参阅性能剖析相关概念

受支持的配置

在对应用进行插桩处理以捕获性能剖析文件数据时,您需要包含语言专属的性能剖析代理。 下表汇总了支持的环境:

环境 Go Java Node.js Python
Compute Engine
Google Kubernetes Engine
App Engine 柔性环境
App Engine 标准环境
Dataproc
Google Cloud 外部

下表汇总了支持的操作系统:

操作系统 Go Java Node.js Python
标准 C 库的 Linux
glibc 实现
标准 C 库的 Linux
musl 实现
是(Alpha 版) 是(Alpha 版)

性能影响

Cloud Profiler 每 1 分钟针对单个 Compute Engine 地区中已配置服务的单个实例收集一次性能剖析数据(一次通常持续 10 秒),以创建单个性能剖析文件。例如,如果您的 GKE 服务运行某 pod 的 10 个副本,那么在 10 分钟内,大约会创建 10 个性能剖析文件,差不多对每个 pod 都会执行一次性能剖析。性能剖析周期是随机的,因此存在各种变化。如需了解详情,请参阅性能剖析文件收集

CPU 和堆分配性能剖析在收集数据时的开销小于 5%。在执行期间分摊到一项服务的多个副本后,开销通常会低于 0.5%,因此,要在生产系统中实现始终执行的性能剖析,这是一个经济实惠的选择。

组件

Cloud Profiler 由性能剖析代理和 Google Cloud 上的控制台界面组成;前者用于收集数据,后者用于查看和分析性能剖析代理收集的数据。

性能剖析代理

您可以在运行您的应用的虚拟机上安装该代理。该代理通常作为您在运行应用时连接到应用的库。代理在应用运行期间收集性能剖析数据。

如需了解如何运行 Cloud Profiler 代理,请参阅:

Profiler 界面

在代理收集了一些性能剖析数据之后,您可以使用 Profiler 界面查看关于 CPU 和内存使用情况的统计信息与应用的各部分有何关联。

Cloud Profiler 界面

性能剖析数据将保留 30 天,因此您可以分析最长 30 天以内的性能数据。您可以下载性能剖析文件以长期存储。

如需了解如何使用 Profiler 界面,请参阅使用 Profiler 界面

配额和限制

如需了解如何查看和管理您的 Profiler 配额,请参阅配额和限制

数据安全

Cloud Profiler 是 VPC Service Controls 支持的一项服务。如需了解详情,请参阅 VPC Service Controls 文档