Cloud Profiler 總覽

想要瞭解實際運作系統的效能極為困難,就算嘗試評估測試環境中的效能,通常也無法如法炮製系統實際運作時所面臨的壓力。將應用程式各部分微基準化雖然有時是可行的做法,但通常同樣也無法複製整個實際運作系統的工作負載和行為。

持續剖析實際運作系統,確實能有效掌握服務在工作環境中運作時,相關資源 (如 CPU 週期和記憶體) 是由服務的哪些部分使用。只不過剖析會對實際運作系統帶來額外負載,因此想要以合理方式來找出資源使用模式,額外的剖析負載必須很小。

Cloud Profiler 是具有統計功能的低負擔分析器,可持續從實際工作環境中的應用程式收集 CPU 使用狀況和記憶體分配資訊;且可將這些資訊按產生該資訊的原始碼歸類,協助您識別使用最多資源的應用程式部分,並進一步掌握應用程式的效能特性。

可用的剖析類型

Cloud Profiler 支援的剖析類型因程式的撰寫語言而異。下表按語言列出支援的剖析類型:

剖析類型 Go Java Node.js Python
CPU 作業時間 Y
堆積 Y
分配的堆積
[Contention] (爭用情況)
[Threads] (執行緒)
實際時間 Y

如需語言要求和任何限制的完整資訊,請參閱該語言的使用指南頁面。如要進一步瞭解這些剖析類型,請參閱剖析概念

支援的設定

當您設定應用程式以擷取剖析資料時,您必須加入特定語言的剖析代理程式。下表大致列出支援的環境:

環境 Go Java Node.js Python
Compute Engine YY
Google Kubernetes Engine YY
App Engine 彈性環境 YY
App Engine 標準環境 YY
Dataproc
Dataflow
Google Cloud外部 YY

下表大致列出支援的作業系統:

作業系統 Go Java Node.js Python
Linux
glibc 標準 C 程式庫的實作
Y Y
Linux
musl 標準 C 程式庫的實作
Y (Alpha) Y (Alpha)

效能影響

Cloud Profiler 通常會以 10 秒期間內收集的資料來建立一組剖析資料;收集頻率為在單一 Compute Engine 區域中,針對已設定服務的單一執行個體每分鐘一次。舉例來說,如果您的 GKE 服務正在執行一個 Pod 的 10 組備用資源,則在 10 分鐘期間內系統會建立大概 10 組剖析資料,且每個 Pod 大約都會剖析一次。剖析期間為隨機進行,因此會有變異。詳情請參閱「剖析資料收集」。

在資料收集期間,CPU 和堆積分配剖析負擔只佔不到 5%。如果再於執行時間內平均分攤到服務的多個備用資源,則負擔通常就可以減少到低於 0.5%,因此就算在實際運作系統中持續剖析,也不會耗費太多成本。

元件

Cloud Profiler 由剖析代理程式和 Google Cloud上的主控台介面構成,前者會收集資料,而後者則可讓您查看和分析代理程式收集的資料。

剖析代理程式

您要將代理程式安裝在執行應用程式的虛擬機器上。代理程式通常會是程式庫的形式,讓您在執行應用程式時附加到應用程式中。代理程式會在應用程式執行時收集剖析資料。

如要瞭解如何執行 Cloud Profiler 代理程式,請參閱:

Profiler 介面

代理程式收集到一些剖析資料後,您可以使用 Profiler 介面來查看 CPU 和記憶體使用量統計資料與應用程式區域的關聯性。

Cloud Profiler 介面

剖析資料會保留 30 天,因此您最多可分析最近 30 天內的效能資料。或者,您也可視需要下載保存這些剖析資料。

配額與限制

如要瞭解如何查看和管理 Profiler 配額,請參閱「配額與限制」一文。

資料安全性

Cloud Profiler 是 VPC Service Controls 支援的服務。詳情請參閱 VPC Service Controls 說明文件