設定適用于大規模負載的 Azure 負載測試

在本文中,您將瞭解如何使用 Azure 負載測試來設定高延展性負載測試。 Azure 負載測試會抽象化布建基礎結構以模擬大規模流量的複雜性。 若要相應放大負載測試,您可以設定平行測試引擎實例的數目。 若要達到最佳負載分佈,您可以在 Azure 負載測試儀表板中監視測試實例健康情況計量。

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

  • 現有的 Azure 負載測試資源。 若要建立 Azure 負載測試資源,請參閱快速入門 建立和執行負載測試

設定負載測試的負載參數

若要模擬應用程式的使用者流量,您可以設定負載模式,以及您想要模擬負載的虛擬使用者數目。 透過跨許多平行測試引擎實例執行負載測試,Azure 負載測試可以相應放大模擬應用程式流量的虛擬使用者數目。 負載模式會決定負載在負載測試期間分佈的方式。 負載模式的範例包括線性、階梯或尖峰負載。

根據負載測試的類型、URL 型或 JMeter 型,您可以有不同的選項來設定目標負載和負載模式。 下表列出這兩種測試類型之間的差異。

測試類型 虛擬使用者數目 負載模式
以 URL 為基礎的 (基本) 在負載測試組態中指定虛擬使用者的目標數目。 線性負載模式,以增加時間和虛擬使用者數目為基礎。
以 URL 為基礎的 (進階) 指定負載測試組態中每個實例的測試引擎數目和虛擬使用者數目。 設定負載模式(線性、步驟、尖峰)。
以 JMeter 為基礎 在負載測試組態中指定測試引擎的數目。 在測試腳本中指定虛擬使用者的數目。 在測試腳本中設定負載模式。

設定 URL 型測試的負載參數

若要指定 URL 型負載測試的負載參數:

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

  2. 在左側導覽中,選取 [ 測試 ] 以檢視所有測試。

  3. 在清單中,選取負載測試,然後選取 [ 編輯 ]。

    Screenshot that shows the list of load tests and the 'Edit' button.

    或者,您也可以從 [測試詳細資料] 頁面編輯測試組態。 若要這樣做,請選取 [ 設定 ],然後選取 [ 測試 ]。

  4. 在 [ 基本] 頁面上,請務必選取 [ 啟用進階設定 ]。

  5. 在 [ 編輯測試] 頁面上,選取 [ 載入] 索引標籤。

    針對 URL 型測試,您可以設定平行測試引擎實例的數目和負載模式。

  6. 使用引擎實例 滑杆控制項來更新平行測試引擎實例的數目。 或者,在輸入方塊中輸入目標值。

    Screenshot of the 'Load' tab on the 'Edit test' pane.

  7. 從清單中選取 [ 載入模式 ] 值。

    針對每個模式,填入對應的組態設定。 圖表提供負載模式及其組態參數的視覺標記法。

    Screenshot of the 'Load' tab when editing a load test, showing how to configure the load pattern.

設定 JMeter 型測試的負載參數

若要指定 JMeter 型負載測試的負載參數:

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

  2. 在左側導覽中,選取 [ 測試 ] 以檢視所有測試。

  3. 在清單中,選取負載測試,然後選取 [ 編輯 ]。

    Screenshot that shows the list of load tests and the 'Edit' button.

    或者,您也可以從 [測試詳細資料] 頁面編輯測試組態。 若要這樣做,請選取 [ 設定 ],然後選取 [ 測試 ]。

  4. 在 [ 編輯測試 ] 頁面上,選取 [ 載入 ] 索引標籤。使用 [引擎實例 ] 滑杆控制項來更新測試引擎實例的數目,或直接在輸入方塊中輸入值。

    Screenshot of the 'Load' tab on the 'Edit test' pane.

  5. 選取 [ 套用 ] 以修改測試,並在重新執行時使用新的組態。

監視引擎實例計量

若要確定測試引擎實例本身不是效能瓶頸,您可以監視測試引擎實例的資源計量。 測試實例的高資源使用量可能會對負載測試結果產生負面影響。

Azure 負載測試會報告每個實例的四個資源計量:

  • CPU 百分比。
  • 記憶體百分比。
  • 每秒的網路位元組數。
  • 虛擬使用者數目。

如果測試回合期間的平均 CPU 百分比或記憶體百分比維持在 75% 以下,測試引擎實例就會被視為狀況良好。

若要檢視引擎資源計量:

  1. 移至負載測試資源。 在左窗格中,選取 [ 測試 ] 以檢視負載測試清單。

  2. 在清單中,選取負載測試以檢視測試回合清單。

  3. 在測試回合清單中,選取您的測試回合。

  4. 在測試回合儀表板中,選取 [引擎健康情況 ] 以檢視引擎資源計量。

    或者,使用篩選控制項選取特定的測試引擎實例。

Screenshot that shows the load engine health metrics on the test run dashboard.

針對狀況不良的引擎實例進行疑難排解

如果一或多個實例顯示高資源使用量,可能會影響測試結果。 若要解決此問題,請嘗試下列一或多個步驟:

  • 減少每個測試引擎的執行緒數(虛擬使用者)。 若要達到目標虛擬使用者數目,您可以增加負載測試的引擎實例數目。

  • 請確定您的腳本有效,且沒有多餘的程式碼。

  • 如果引擎健全狀況狀態未知,請重新執行測試。

判斷每秒的要求數

Azure 負載測試可以為您的負載測試產生的每秒要求數目 上限,取決於應用程式的 延遲 和虛擬使用者 數目 應用程式延遲是從測試引擎傳送應用程式要求到接收回應的總時間。 虛擬使用者計數是 Azure 負載測試在指定時間執行的平行要求數目。

若要計算每秒的要求數目,請套用下列公式:RPS = (#of V) * (以秒為單位的 1/延遲)。

例如,如果應用程式延遲是 20 毫秒(0.02 秒),而且您正在產生 2,000 個 OU 的負載,則您可以達到大約 100,000 個 RPS (2000 * 1/0.02s)。

若要達到每秒要求的目標數目,請設定負載測試的虛擬使用者總數。

注意

Apache JMeter 只會報告將要求送回伺服器,或成功或未成功。 如果 Apache JMeter 無法連線到您的應用程式,則每秒的實際要求數目將會低於最大值。 可能的原因可能是伺服器太忙而無法處理要求,或缺少 TLS/SSL 憑證。 若要診斷連線問題,您可以檢查 負載測試儀表板中的 [錯誤 ] 圖表,並 下載負載測試記錄檔

測試引擎實例和虛擬使用者

在 Apache JMeter 腳本中,您可以指定平行線程的數目。 每個執行緒都代表存取應用程式端點的虛擬使用者。 建議您將腳本中的執行緒數目保持在 250 個以下。

在 Azure 負載測試中, 測試引擎 實例負責執行 Apache JMeter 腳本。 所有測試引擎實例都會以平行方式執行。 您可以設定負載測試的實例數目。

負載測試的虛擬使用者總數為:OU = (# 執行緒) * (# 測試引擎實例)。

若要模擬目標數目的虛擬使用者,您可以在 JMeter 腳本中設定平行線程,並據以設定負載測試的引擎實例。 監視測試引擎計量 ,以優化實例數目。

例如,若要模擬 1,000 個虛擬使用者,請將 Apache JMeter 腳本中的執行緒數目設定為 250。 然後使用四個測試引擎實例來設定負載測試(也就是 4 x 250 執行緒)。

Azure 負載測試資源的位置會決定測試引擎實例的位置。 負載測試資源中的所有測試引擎實例都會裝載在相同的 Azure 區域中。