評估應用程式效能

本文說明如何設定及使用 Cloud Profiler。您使用 Cloud Shell 下載 Go 程式範例,並在啟用剖析功能的情況下執行程式,然後使用 Profiler 介面來探索擷取的資料。

如果您打算剖析在Google Cloud以外環境執行的應用程式,就必須執行本文件未提及的部分設定步驟。如要進一步瞭解這些步驟,請參閱「剖析在 Google Cloud Platform 以外環境執行的應用程式 Google Cloud」。

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Enable the required API.

    Enable the API

  5. 如要開啟 Cloud Shell,請在 Google Cloud 控制台工具列中,按一下「啟用 Cloud Shell」

    啟動 Cloud Shell。

    幾秒後,Google Cloud 控制台會開啟 Cloud Shell 工作階段:

    Cloud Shell 工作階段。

  6. 讓程式進行剖析

    範例程式 main.go 位於 GitHub 的 golang-samples 存放區。如要取得這個程式,請在 Cloud Shell 中執行下列指令,擷取 Go 範例套件:

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    

    套件擷取作業需要一些時間才能完成。

    剖析程式碼

    在 Cloud Shell 中,前往已擷取套件中 Profiler 範例程式碼的目錄:

    cd golang-samples/profiler/profiler_quickstart
    

    main.go 程式會建立需要使用大量 CPU 的工作負載,藉此為分析器提供資料。在 Cloud Shell 中執行下列指令,啟動並繼續執行程式:

     go run main.go
    

    這個程式能在本身執行時載入 CPU,且設定為使用 Profiler;因此能在程式執行時,從中收集剖析資料並定期儲存。

    啟動程式後幾秒,您會看到 profiler has started 訊息。大約一分鐘後,畫面上會再多顯示兩則訊息:

     successfully created profile CPU
     start uploading profile
    

    這些訊息表示剖析資料已建立並上傳到您的 Cloud Storage 專案,程式會持續發出倒數兩則訊息,並維持約每分鐘發出一次訊息的頻率直到結束執行。

    如果您在啟動服務後收到權限遭拒錯誤訊息,請參閱 Google Cloud 專案設定的錯誤

    Profiler 介面

    啟動應用程式後,Profiler 會在幾秒內顯示初始設定檔資料。介面提供各種控制項和火焰圖,方便您探索剖析資料。

    顯示範例程式碼的 Profiler 介面。

    除了時間控制項,您還可以選擇要使用的剖析資料組合。剖析多個應用程式時,您可以使用「Service」 來選取剖析資料的來源。「Profile type」(剖析類型) 可讓您選擇要顯示的剖析資料種類。至於「Zone name」(區域名稱) 和「Version」(版本) 則可讓您限制只顯示來自 Compute Engine 區域的資料或應用程式版本。而「Weight」(權重) 可讓您選取在資源使用高峰期間擷取的剖析資料。

    如要進一步調整火焰圖如何顯示您已選定要進行分析的剖析資料,您可以新增篩選器。在上一個螢幕截圖中,篩選列 顯示了一個篩選器。這個篩選器選項為 Metric,篩選器值則為 CPU time

    探索資料

    火焰圖會顯示程式的呼叫堆疊。火焰圖以框架代表每個函式。框架的寬度代表該函式的資源使用量比例。頂端框架代表整個程式,一律顯示 100% 資源使用量,並且列出這個圖表中是用多少組剖析資料來計算平均值。

    在前文的螢幕擷圖中,程式範例的呼叫堆疊組合並不複雜,只有 5 個框架:

    • 灰色的框架代表整個可執行檔,佔了 100% 要使用的資源。
    • 綠色的 main 框架是 Go runtime.main
    • 橘色的 main 框架是範例程式的 main 常式。
    • 橘色的 busyloop 框架是從範例的 main 呼叫的常式。
    • 橘色的 main.load 框架是從範例的 main 呼叫的常式。

    篩選器選取器可讓您篩選出符合特定名稱的函式。舉例來說,如果有公用程式函式標準程式庫,您可以從圖表中將其移除。此外,您也可以移除從特定方法發出的呼叫堆疊,或者用其他方式來簡化圖表。main.go 應用程式很簡單,因此沒有什麼內容可篩選排除。

    即使是簡單的應用程式,篩選器也能讓您隱藏不需要的框架,以便更清楚地查看所需的框架。例如,在範例程式碼的剖析螢幕擷圖中,灰色框架比下方的第一個 main 框架稍微大一點,這是因為有其他正在執行的事件,但因為 main 呼叫堆疊耗用的資源比例如此之大,所以無法立即顯示出來嗎?如要查看應用程式的 main 常式外部正在發生的事件,請新增可以隱藏 main 常式呼叫堆疊的篩選器。main 外部只占 0.227% 的資源用量:

    在範例程式中隱藏堆疊。

    如要進一步瞭解篩選及其他探索剖析資料的方式,請參閱「選取要分析的剖析資料」。

    後續步驟

    如需剖析作業的一般資訊,請參閱下列文件:

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