Stackdriver Profiler 簡介

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

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

Stackdriver Profiler 是具有統計功能的低負擔分析器,可持續從實際工作環境中的應用程式收集 CPU 使用狀況和記憶體分配資訊;且可將收集到資訊進行應用程式原始碼屬性歸類,協助您識別使用最多資源的應用程式部分或者程式碼的效能特徵。

環境和語言

Stackdriver Profiler 能在下列 Google Cloud Platform 環境的 Linux 上執行:

  • Compute Engine
  • Google Kubernetes Engine (GKE)
  • App Engine 彈性環境
  • App Engine 標準環境

Stackdriver Profiler 可剖析用以下語言撰寫的程式碼:

  • Go
  • Java
  • Node.js
  • Python

如要進一步瞭解如何執行剖析代理程式,請參閱「剖析代理程式」一文。

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

剖析資料類型 Go1 Java Node.js Python
CPU 4
堆積 2
爭用情況
執行緒
實際時間 3 5

1 如果是 App Engine 標準環境,需要使用 Go 1.11 版或較新版本。
2 只適用於 App Engine 標準環境。
3 不適用於 App Engine 標準環境。
4 只適用於 Python 3.2 版和更高版本。
5 只適用於 Python 3.6 版和更高版本。

如需這些剖析類型的詳細資訊,請參閱剖析概念

效能影響

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

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

元件

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

剖析代理程式

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

如要進一步瞭解如何執行 Stackdriver Profiler 代理程式,請參閱:

您還可以在非 Google Cloud Platform 系統中執行剖析代理程式;詳情請參閱「在 Google Cloud Platform 以外的環境剖析」。

Profiler 介面

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

Stackdriver Profiler 介面

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

如要瞭解如何使用 Profiler 介面,請參閱使用 Profiler 介面一文。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver Profiler
需要協助嗎?請前往我們的支援網頁