共用方式為


教學課程:執行負載測試以識別 Web 應用程式中的效能瓶頸

在本教學課程中,您將了解如何使用 Azure 負載測試識別 Web 應用程式中的效能瓶頸。 您可以模擬範例 Node.js Web 應用程式的負載,然後使用負載測試儀表板來分析用戶端和伺服器端計量。

範例應用程式是由與 NoSQL 資料庫互動的 Node.js Web API 所組成。 您會將 Web API 部署至 Azure App Service Web 應用程式,並使用 Azure Cosmos DB 作為資料庫。

在本教學課程中,您會了解如何:

  • 部署範例應用程式。
  • 建立和執行負載測試。
  • 將 Azure 應用程式元件新增至負載測試。
  • 使用負載測試儀表板識別效能瓶頸。

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶
  • 在您的本機電腦上安裝 Azure CLI
  • Azure CLI 2.2.0 版或更新版本。 執行 az --version 以尋找電腦上安裝的版本。 如果您需要安裝或升級 Azure CLI,請參閱如何安裝 Azure CLI
  • Visual Studio Code \(英文\)。 如果您沒有,請下載並安裝它
  • Git。 如果您沒有,請下載並安裝它

必要條件檢查

開始之前,請驗證環境:

部署範例應用程式

在本教學課程中,您會針對部署至 Azure App Service 的範例 Web 應用程式產生負載。 使用 Azure CLI 命令、Git 命令和 PowerShell 命令,在您的 Azure 訂用帳戶中部署範例應用程式。

  1. 開啟 Windows PowerShell、登入 Azure,並設定訂用帳戶:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. 複製範例應用程式的來源存放庫:

    git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
    

    範例應用程式是 Node.js 應用程式,其中包含 Azure App Service Web 元件和 Azure Cosmos DB 資料庫。 存放庫包含將範例應用程式部署至 Azure 訂用帳戶的 PowerShell 指令碼。 它也具有您將在後續步驟中使用的 Apache JMeter 指令碼。

  3. 移至 Node.js 應用程式的目錄,並使用下列 PowerShell 指令碼部署範例應用程式:

    cd nodejs-appsvc-cosmosdb-bottleneck
    .\deploymentscript.ps1
    

    提示

    您可以在 Linux/WSLmacOS 上安裝 PowerShell。

    安裝之後,您可以執行上一個命令作為 pwsh ./deploymentscript.ps1

  4. 在提示中,提供:

    • 您的 Azure 訂用帳戶識別碼。
    • Web 應用程式的唯一名稱。
    • 一個位置。 根據預設,此位置為 eastus。 您可以執行 Get-AzLocation 命令來取得區域代碼。

    重要

    針對您的 Web 應用程式,請僅使用小寫字母和數字。 請勿使用空格或特殊字元。

  5. 部署完成後,請在瀏覽器視窗中開啟 https://<yourappname>.azurewebsites.net,以前往執行中的範例應用程式。

現在您已部署和執行範例應用程式,您可以建立 Azure 負載測試資源和負載測試。

建立負載測試

在本教學課程中,您會上傳 JMeter 測試指令碼 (jmx 檔案),以使用 Azure CLI 建立負載測試。 範例應用程式存放庫已經包含負載測試組態檔和 JMeter 測試指令碼。

若要使用 Azure 入口網站建立負載測試,請遵循快速入門:使用 JMeter 指令碼建立負載測試中的步驟。

請遵循下列步驟,使用 Azure CLI 建立 Azure 負載測試資源和負載測試:

  1. 開啟終端視窗,然後輸入下列命令來登入您的 Azure 訂用帳戶。

    az login
    
  2. 移至範例應用程式目錄。

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. 建立 Azure 負載測試資源的資源群組。

    或者,您也可以重複使用您先前所部署範例應用程式的資源群組。

    <load-testing-resource-group-name> 文字預留位置取代為資源群組的名稱。

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. 使用 az load create 命令建立 Azure 負載測試資源。

    <load-testing-resource-name> 文字預留位置取代為負載測試資源的名稱。

    # This script requires the following Azure CLI extensions:
    # - load
    
    loadTestResource="<load-testing-resource-name>"
    
    az load create --name $loadTestResource --resource-group $resourceGroup --location $location
    
  5. 使用 az load test create 命令建立負載測試,以針對範例應用程式模擬負載。

    <web-app-hostname> 文字預留位置取代為範例應用程式的 App Service 主機名稱。 此值的格式為 myapp.azurewebsites.net。 請勿包含 URL 的 https:// 部分。

    testId="sample-app-test"
    webappHostname="<web-app-hostname>"
    
    az load test create --test-id $testId --load-test-resource $loadTestResource --resource-group $resourceGroup --load-test-config-file SampleApp.yaml --env webapp=$webappHostname
    

    此命令會使用 Sampleapp.yaml 負載測試組態檔,其會參考 SampleApp.jmx JMeter 測試指令碼。 您可以使用命令列參數將範例應用程式主機名稱傳遞至負載測試。

您現在有 Azure 負載測試資源和負載測試,可針對 Azure 訂用帳戶中的範例 Web 應用程式產生負載。

新增 Azure 應用程式元件以監視應用程式

Azure 負載測試可讓您監視應用程式 Azure 元件的資源計量。 藉由分析這些伺服器端計量,您可以直接從 Azure 負載測試儀表板識別應用程式中的效能和穩定性問題。

在本教學課程中,您會為部署在 Azure 上的範例應用程式新增 Azure 元件,例如 App Service、Cosmos DB 帳戶等等。

若要將範例應用程式的 Azure 應用程式元件新增至負載測試:

  1. Azure 入口網站中,移至您的 Azure 負載測試資源。

  2. 在左窗格中,選取 [測試] 檢視負載測試的清單

  3. 選取負載測試旁的核取方塊,然後選取 [編輯]

    Screenshot that shows the list of load tests in the Azure portal, highlighting how to select a test from the list and the Edit button to modify the load test configuration.

  4. 移至 [監視] 索引標籤,然後選取 [新增/修改]

  5. 選取您先前所部署範例應用程式的核取方塊,然後選取 [套用]

    Screenshot that shows how to add app components to a load test in the Azure portal.

    提示

    您可以使用資源群組篩選,只檢視範例應用程式資源群組中的 Azure 資源。

  6. 選取 [套用] 以將變更儲存至負載測試組態。

您已成功將範例應用程式的 Azure 應用程式元件新增至負載測試,以在負載測試執行時啟用監視伺服器端計量。

執行負載測試

您現在可以執行負載測試,以針對您在 Azure 訂用帳戶中部署的範例應用程式模擬負載。 在本教學課程中,您會從 Azure 入口網站內執行負載測試。 或者,您可以設定 CI/CD 工作流程來執行負載測試

若要在 Azure 入口網站中執行負載測試:

  1. Azure 入口網站中,移至您的 Azure 負載測試資源。

  2. 在左窗格中,選取 [測試] 檢視負載測試的清單

  3. 從清單中選取負載測試,以檢視測試詳細資料和測試回合清單。

  4. 選取 [執行],然後再次選取 [執行] 以啟動負載測試。

    您可以選擇性地輸入測試回合描述。

    Screenshot that shows how to start a load test in the Azure portal.

    當您執行負載測試時,Azure 負載測試會將 JMeter 測試指令碼和任何額外的檔案部署到測試引擎執行個體,然後啟動負載測試。

  5. 負載測試啟動時,您應該會看到負載測試儀表板。

    如果儀表板未顯示,您可以選取 [重新整理],然後從清單中選取測試回合。

    負載測試儀表板會顯示測試回合詳細資料,例如用戶端計量和伺服器端應用程式計量。 儀表板上的圖表會自動重新整理。

    Screenshot that shows the client-side metrics graphs in the load test dashboard in the Azure portal.

    您可以套用多個篩選,或將結果彙總至不同的百分位數,以自訂圖表。

    提示

    您可以隨時透過選取 [停止],從 Azure 入口網站負載測試。

等到負載測試完整完成,再繼續進行下一節。

使用伺服器端計量來識別效能瓶頸

在本節中,您會分析負載測試結果,以識別應用程式中的效能瓶頸。 檢查用戶端和伺服器端計量,以判斷問題的根本原因。

  1. 首先,查看用戶端計量。 請注意,針對 addget API 要求的回應時間計量的第 90 個百分位數高於 lasttimestamp API 的百分位數。

    Screenshot that shows the client-side metrics.

    您可以看到類似的錯誤模式,其中 lasttimestamp API 的錯誤數目比其他 API 少。

    Screenshot that shows the error chart.

    addget API 的結果很類似,而 lasttimestamp API 的行為則不同。 原因可能是資料庫相關,因為 addget API 都牽涉到資料庫存取。

  2. 若要更詳細地調查此瓶頸,請向下卷動至 [伺服器端計量] 儀表板區段。

    伺服器端計量會顯示 Azure 應用程式元件的詳細資訊:Azure App Service 方案、Azure App Service Web 應用程式和 Azure Cosmos DB。

    Screenshot that shows the Azure App Service plan metrics.

    在 Azure App Service 方案的計量中,您可以看到 [CPU 百分比] 和 [記憶體百分比] 計量在可接受的範圍內。

  3. 現在,請查看 Azure Cosmos DB 伺服器端計量。

    Screenshot that shows Azure Cosmos DB metrics.

    請注意,[標準化 RU 使用量] 計量會顯示資料庫以 100% 的資源使用率快速執行。 高資源使用量可能會導致資料庫節流錯誤。 它也可能會增加 addget Web API 的回應時間。

    您也可以看到 Azure Cosmos DB 執行個體的 [佈建輸送量] 計量最大輸送量為 400 RU。 增加資料庫的佈建輸送量可能會解決效能問題。

增加資料庫輸送量

在本節中,您會將更多資源配置給資料庫,以解決效能瓶頸。

針對 Azure Cosmos DB,增加資料庫 RU 調整設定:

  1. 移至您在範例應用程式部署過程中佈建的 Azure Cosmos DB 資源。

  2. 選取 [資料總管] 索引標籤。

    Screenshot that shows Data Explorer tab.

  3. 選取 [調整和設定],並將輸送量值更新為 1200

    Screenshot that shows the updated Azure Cosmos DB scale settings.

  4. 選取 [儲存] 以確認變更。

確認效能改善

現在您已增加資料庫輸送量,請重新執行負載測試,並確認效能結果已改善:

  1. 在測試回合儀表板上,選取 [重新執行],然後在 [重新執行測試] 窗格中選取 [重新執行]

    Screenshot that shows selections for running the load test.

    您可以看到新的測試回合專案,其狀態資料行會在佈建執行完成狀態之間循環。 隨時選取測試回合,以監視負載測試的進度。

  2. 負載測試完成後,請檢查用戶端計量的回應時間結果和錯誤結果。

  3. 檢查 Azure Cosmos DB 的伺服器端計量,並確定效能有所改善。

    Screenshot that shows the Azure Cosmos DB client-side metrics after update of the scale settings.

    Azure Cosmos DB 標準化 RU 使用量值現在遠低於 100%。

現在您已更新資料庫的調整設定,您可以看到:

  • addget API 的回應時間已改善。
  • 標準化 RU 使用量仍然遠低於限制。

因此,應用程式的整體效能已獲得改善。

清除資源

重要

您可以針對其他 Azure 負載測試教學課程和操作說明文章重複使用所建立的 Azure 負載測試資源。

如果不打算使用所建立的任何資源,請予以刪除以免產生任何進一步的費用。 如果您已在不同的資源群組中部署範例應用程式,您可能會想要重複下列步驟。

若要使用 Azure 入口網站來刪除資源:

  1. 選取左上角的功能表按鈕,再選取 [資源群組]

  2. 從清單中,選取您所建立的資源群組。

  3. 選取 [刪除資源群組]Screenshot of the selections to delete a resource group in the Azure portal.

  4. 輸入資源群組名稱。 接著選取刪除

若要使用 Azure CLI 刪除資源,請輸入下列命令:

az group delete --name <yourresourcegroup>

請記得,當您刪除資源群組時,也會刪除該資源群組內的所有資源。