設定適用于大規模負載的 Azure 負載測試
在本文中,您將瞭解如何使用 Azure 負載測試來設定高延展性負載測試。 Azure 負載測試會抽象化布建基礎結構以模擬大規模流量的複雜性。 若要相應放大負載測試,您可以設定平行測試引擎實例的數目。 若要達到最佳負載分佈,您可以在 Azure 負載測試儀表板中監視測試實例健康情況計量。
必要條件
具有有效訂用帳戶的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
現有的 Azure 負載測試資源。 若要建立 Azure 負載測試資源,請參閱快速入門 建立和執行負載測試 。
設定負載測試的負載參數
若要模擬應用程式的使用者流量,您可以設定負載模式,以及您想要模擬負載的虛擬使用者數目。 透過跨許多平行測試引擎實例執行負載測試,Azure 負載測試可以相應放大模擬應用程式流量的虛擬使用者數目。 負載模式會決定負載在負載測試期間分佈的方式。 負載模式的範例包括線性、階梯或尖峰負載。
根據負載測試的類型、URL 型或 JMeter 型,您可以有不同的選項來設定目標負載和負載模式。 下表列出這兩種測試類型之間的差異。
測試類型 | 虛擬使用者數目 | 負載模式 |
---|---|---|
以 URL 為基礎的 (基本) | 在負載測試組態中指定虛擬使用者的目標數目。 | 線性負載模式,以增加時間和虛擬使用者數目為基礎。 |
以 URL 為基礎的 (進階) | 指定負載測試組態中每個實例的測試引擎數目和虛擬使用者數目。 | 設定負載模式(線性、步驟、尖峰)。 |
以 JMeter 為基礎 | 在負載測試組態中指定測試引擎的數目。 在測試腳本中指定虛擬使用者的數目。 | 在測試腳本中設定負載模式。 |
設定 URL 型測試的負載參數
若要指定 URL 型負載測試的負載參數:
在 Azure 入口網站 中,移至您的 Azure 負載測試資源。
在左側導覽中,選取 [ 測試 ] 以檢視所有測試。
在清單中,選取負載測試,然後選取 [ 編輯 ]。
或者,您也可以從 [測試詳細資料] 頁面編輯測試組態。 若要這樣做,請選取 [ 設定 ],然後選取 [ 測試 ]。
在 [ 基本] 頁面上,請務必選取 [ 啟用進階設定 ]。
在 [ 編輯測試] 頁面上,選取 [ 載入] 索引標籤。
針對 URL 型測試,您可以設定平行測試引擎實例的數目和負載模式。
使用引擎實例 滑杆控制項來更新平行測試引擎實例的數目。 或者,在輸入方塊中輸入目標值。
從清單中選取 [ 載入模式 ] 值。
針對每個模式,填入對應的組態設定。 圖表提供負載模式及其組態參數的視覺標記法。
設定 JMeter 型測試的負載參數
若要指定 JMeter 型負載測試的負載參數:
在 Azure 入口網站 中,移至您的 Azure 負載測試資源。
在左側導覽中,選取 [ 測試 ] 以檢視所有測試。
在清單中,選取負載測試,然後選取 [ 編輯 ]。
或者,您也可以從 [測試詳細資料] 頁面編輯測試組態。 若要這樣做,請選取 [ 設定 ],然後選取 [ 測試 ]。
在 [ 編輯測試 ] 頁面上,選取 [ 載入 ] 索引標籤。使用 [引擎實例 ] 滑杆控制項來更新測試引擎實例的數目,或直接在輸入方塊中輸入值。
選取 [ 套用 ] 以修改測試,並在重新執行時使用新的組態。
監視引擎實例計量
若要確定測試引擎實例本身不是效能瓶頸,您可以監視測試引擎實例的資源計量。 測試實例的高資源使用量可能會對負載測試結果產生負面影響。
Azure 負載測試會報告每個實例的四個資源計量:
- CPU 百分比。
- 記憶體百分比。
- 每秒的網路位元組數。
- 虛擬使用者數目。
如果測試回合期間的平均 CPU 百分比或記憶體百分比維持在 75% 以下,測試引擎實例就會被視為狀況良好。
若要檢視引擎資源計量:
移至負載測試資源。 在左窗格中,選取 [ 測試 ] 以檢視負載測試清單。
在清單中,選取負載測試以檢視測試回合清單。
在測試回合清單中,選取您的測試回合。
在測試回合儀表板中,選取 [引擎健康情況 ] 以檢視引擎資源計量。
或者,使用篩選控制項選取特定的測試引擎實例。
針對狀況不良的引擎實例進行疑難排解
如果一或多個實例顯示高資源使用量,可能會影響測試結果。 若要解決此問題,請嘗試下列一或多個步驟:
減少每個測試引擎的執行緒數(虛擬使用者)。 若要達到目標虛擬使用者數目,您可以增加負載測試的引擎實例數目。
請確定您的腳本有效,且沒有多餘的程式碼。
如果引擎健全狀況狀態未知,請重新執行測試。
判斷每秒的要求數
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 區域中。
相關內容
- Azure 負載測試 中有關服務限制和配額的詳細資訊 。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應