剖析 Go 应用的性能
本页面介绍如何修改 Go 应用以捕获 性能剖析数据,并将该数据发送到您的 Google Cloud 项目。如需了解性能剖析的常规信息,请参阅 性能剖析相关概念。
Go 的性能剖析文件类型:
- CPU 时间
- 堆
- 分配的堆
- 争用 (Go mutex)
- 线程 (Go goroutine)
支持的 Go 语言版本:
- 除非另有说明,否则所有已正式维护的 Go 版本。 如需了解详情,请参阅 Go 语言发布政策。
支持的性能剖析代理版本:
- 支持代理的最新版本。通常,不支持发布超过一年的版本。我们建议您使用最近发布的代理版本。
支持的操作系统:
- Linux。Linux 内核支持剖析 Go 应用的性能,其标准 C 库是使用
glibc或musl实现的。如需了解针对 Linux Alpine 内核的特定配置信息,请参阅在 Linux Alpine 上运行。
支持的环境:
- Compute Engine
- Google Kubernetes Engine (GKE)
- App Engine 柔性环境
- App Engine 标准环境(需要 Go 1.11 或更高版本)
- 外部 Google Cloud (如需了解其他 配置要求,请参阅 剖析在外部运行的应用的性能 Google Cloud。)
启用 Profiler API
在使用性能剖析代理之前,请确保已启用底层 Profiler API。您可以使用 Google Cloud CLI 或 控制台检查 API 的状态,并在必要时启用 该 API: Google Cloud
gcloud CLI
如果您尚未在工作站上安装 Google Cloud CLI,请参阅 Google Cloud CLI 文档。
运行以下命令:
gcloud services enable cloudprofiler.googleapis.com
如需了解详情,请参阅 gcloud services。
Google Cloud 控制台
向服务帐号授予 IAM 角色
如果您在 Google Cloud 资源上部署应用,并且您 使用的是默认服务帐号,并且尚未修改对该服务帐号的角色授予 ,则可以跳过本部分。
如果您执行以下任一操作,则需要向服务帐号授予 Cloud Profiler Agent (roles/cloudprofiler.agent) 的 IAM 角色:
- 您使用的是默认服务帐号,但修改了其角色授予。
- 您使用的是用户创建的服务帐号。
- 您使用的是 Workload Identity, 请向 Kubernetes 服务帐号授予 Cloud Profiler Agent 角色。
您可以使用
Google Cloud 控制台或 Google Cloud CLI 向服务帐号授予 IAM 角色。例如,您可以使用
gcloud projects add-iam-policy-binding
命令:
gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
--member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID. \
--role roles/cloudprofiler.agent
在使用上述命令之前,请替换以下内容:
- GCP_PROJECT_ID:您的项目 ID。
- MY_SVC_ACCT_ID:您的服务帐号的名称。
如需了解详情,请参阅 管理对项目、文件夹和组织的访问权限。
使用 Cloud Profiler
在所有受支持的环境中,若要使用 Profiler,请在应用中导入软件包,然后尽早在应用中初始化 Profiler。
将 MutexProfiling 配置选项设置为 true 即可启用互斥争用性能剖析(界面中的“争用”)。
如需详细了解 Profiler API 及所有配置选项,请参阅公共 API 文档。
Compute Engine
对于 Compute Engine,请在 profiler.Config 中将 Service 设置为要进行性能剖析的服务的名称,并视需要将 ServiceVersion 设置为服务版本: