1. 程式人生 > >轉 如何進行 5 萬並發用戶負載測試?

轉 如何進行 5 萬並發用戶負載測試?

src -s led 網站 path 結束 叠代 創建 更改

本文將介紹運行 5 萬並發用戶測試所需要的步驟(該測試用戶量最多可達 200 萬)。

步驟概述

  1. 編寫腳本;
  2. 使用 JMeter 進行本地測試;
  3. BlazeMeter 沙箱測試;
  4. 使用一個控制臺和一個引擎,設置每個引擎的用戶數量;
  5. 設置和測試集群(一個控制臺和 10 到 14 個引擎);
  6. 使用主從功能達到最大並發量目標。

技術分享圖片

第 1 步:編寫腳本

在開始之前,請先從 JMeter Apache 社區網站(http://jmeter.apache.org/)獲取最新的 JMeter 版本。

下載 JMeter 插件管理器(https://jmeter-plugins.org/wiki/PluginsManager/)。下載好 JAR 文件後,將其放入 JMeter 的 lib/ext 目錄。然後,啟動 JMeter,並轉到“選項”菜單,找到插件管理器。

你可以通過多種方式獲取腳本:

  1. 使用 BlazeMeter Chrome 插件記錄測試步驟;
  2. 使用 JMeter HTTP(S)測試腳本記錄器設置代理,運行測試,並記錄所有內容;
  3. 從頭開始手動操作並構建所有內容(主要針對功能 /QA 測試)。

如果你的腳本是通過錄制得到(如上面的步驟 1 和 2),請記住:

  1. 你需要修改某些參數,例如用戶名和密碼,或者使用包含這些參數的 CSV 文件,這樣每個用戶都可以是唯一的。
  2. 你可能需要使用正則表達式、JSON 路徑提取器、XPath 提取器來提取各種元素(如 Token-String、Form-Build-Id 等),以便完成“AddToCart”、“Login”之類的請求。
  3. 保持腳本參數化,並可以使用配置元素(例如 HTTP 請求默認值),以便可以更方便地切換環境。

第 2 步:使用 JMeter 進行本地測試

開始調試腳本,一個線程,進行一次叠代,使用 View Results Tree、Debug Sampler、Dummy Sampler 和打開的 Log Viewer(以防出現 JMeter 錯誤)。

運行所有的場景(返回 true 和 false),確保腳本可以按預期正常運行。

在使用一個線程成功運行腳本後,將線程數提升到 10 到 20 個,時間為 10 分鐘:

  1. 如果你希望每個用戶都是唯一的——結果是這樣的嗎?
  2. 有發生任何錯誤嗎?
  3. 如果你正在進行註冊過程測試,請看一下後端——是否根據你的模板創建了帳戶?它們是唯一的嗎?
  4. 從摘要報告中可以看到有關測試的統計信息——它有意義嗎?找到平均響應時間、錯誤、命中率 / 秒。

在腳本準備好之後:

  1. 刪除 Debug/Dummy Samplers 和腳本監聽器;
  2. 如果你使用了監聽器(例如“將響應保存到文件”),請確保沒有使用任何路徑!對於監聽器或 CSV 數據集配置,請確保沒有使用本地路徑。相反,只使用文件名,就好像它與腳本位於同一文件夾中一樣。
  3. 如果你使用了專有的 JAR 文件,請務必將它上傳。
  4. 如果你使用了多個線程組(或不是默認線程組),請確保在將其上傳到 BlazeMeter 之前設置好這些值。

第 3 步:BlazeMeter 沙箱測試

如果這是你的第一次測試,應該閱讀一下這篇文章(http://community.blazemeter.com/knowledgebase/articles/65152-adding-a-new-jmeter-test-plan),了解如何在 BlazeMeter 中創建測試。

沙箱允許你對腳本和後端進行測試,確保 BlazeMeter 一切正常。

首先,按下灰色按鈕:選擇要控制的 JMeter 引擎,以便完全控制測試參數。

你可能會遇到的常見問題包括:

  1. 防火墻——確保你的環境對 BlazeMeter CIDR 列表(正在不時更新)是開放的,並將它們列入白名單;
  2. 確保所有測試文件(例如 CSV、JAR、JSON、User.properties 等)都在;
  3. 確保沒有使用任何本地路徑。

如果還有問題,請查看日誌中的錯誤(你應該可以下載整個日誌)。

沙箱配置可以是這樣的:

  • 引擎:僅限控制臺(一個控制臺,0 個引擎)
  • 線程:50-300
  • 加速時間:20 分鐘
  • 叠代:永遠
  • 持續時間:30-50 分鐘

你可以在加速期間獲得足夠的數據,分析一下結果,確保腳本按預期執行。

你應該看一下 Waterfall/WebDriver 選項卡,看看請求是否正常。這個時候你應該不會遇到任何錯誤(除非你是有意的)。

另外,還要看一下監控選項卡,看看使用了多少內存和 CPU——這有助你完成步驟 4,到時你可以嘗試設置每個引擎的用戶數。

第 4 步:使用一個控制臺和一個引擎設置每個引擎的用戶數量

在確信腳本可以在 BlazeMeter 中完美運行之後,我們需要弄清楚一個引擎可以支持多少用戶。

如果你能夠使用沙箱數據來確定,那就太好了!

我將為你提供一種方法來解決這個問題,無需查看沙箱測試數據。

將測試配置設置為:

  • 線程數:500
  • 加速時間:40 分鐘
  • 叠代:永遠
  • 持續時間:50 分鐘

接下來,使用一個控制臺和一個引擎。

運行測試,並通過監控選項卡監控測試引擎。

如果你的引擎沒有達到 75%的 CPU 利用率或 85%的內存使用率(可以忽略一次性峰值):

  • 將線程數改為 700,並再次運行測試;
  • 提高線程數,直到獲得 1000 個線程或 60%的 CPU/ 內存使用率。

如果你的引擎超過了 75%的 CPU 利用率或 85%的內存使用率(可以忽略一次峰值):

  • 註意第一次達到 75%的時間點,然後查看當時有多少用戶。
  • 再次運行測試,這次使用從上一次測試中獲得的用戶數量。
  • 這一次,使用實際測試的加速時間(5 到 15 分鐘是一個不錯的值),並將持續時間設置為 50 分鐘。
  • 確保在整個測試過程中不要超過 75%的 CPU 或 85%的內存使用率。

為了安全起見,可以為每個引擎減少 10%的線程數。

第 5 步:設置和測試集群

我們現在知道一個引擎可以支持多少線程。在這一步結束時,我們將知道一個集群(測試)可以支持的用戶數量。

集群是一種邏輯容器,只有一個控制臺和 0 到 14 個引擎。當使用超過 14 個引擎時,它實際上會創建兩個集群(控制臺數量會增加)並克隆你的測試。

每個控制臺最多 14 個引擎是基於 BlazeMeter 的測試得出的結果,可以確保控制臺能夠處理 14 個引擎的壓力。

因此,在這個步驟中,我們將采用步驟 4 的測試,只是將引擎的數量增加到 14。

在測試運行時,請轉到監控選項卡,並驗證:

  1. 不會有引擎超過 75% CPU 或 85%內存限制;
  2. 找到控制臺標簽。轉到日誌選項卡 -> 網絡信息,查找控制臺的私有 IP,這樣就可以找到控制臺的名稱。它不應達到 75% CPU 或 85%內存限制。

如果控制臺達到了這些限制,請減少引擎數量,並再次運行測試,直到控制臺處於這些限制範圍內。

在這個步驟結束時,你就會知道:

  1. 每個集群可以支持的用戶數量;
  2. 每個集群可以達到的命中次數。

在負載結果圖下的聚合表中查找其他統計信息,獲取有關集群吞吐量的更多信息。

第 6 步:使用主從功能達到最大並發量目標

我們已經到了最後一個階段。

我們已經知道腳本可以正常運行,還知道一個引擎可以支持多少用戶以及一個集群可以支持多少用戶。

我們假設有這些值:

  • 一個引擎可以支持 500 個用戶;
  • 集群將有 12 個引擎;
  • 我們的目標是進行 5 萬用戶的測試。

因此,我們需要創建 50000(500 * 12) = 8.3 個集群。

我們可以使用 8 個包含 12 個引擎(4 萬 8)的集群和一個包含 4 個引擎(另外 2 千)的集群。但是,最好可以像這樣分布負載:

我們將為每個集群使用 10 個引擎,而不是 12 個,這樣每個集群的用戶數可以達到 10 * 500 = 5 千。然後再使用 10 個集群,就可以達到 5 萬的規模。

這將有助於我們:

  1. 不需要維護兩種不同的測試類型;
  2. 可以通過簡單地復制現有的集群每次增長 5 千(5 千比 6 千更常見);
  3. 如果有需要,我們可以隨時添加更多的集群。

我們現在準備好用 5 萬用戶創建最終的主從測試:

  1. 將測試名稱從“My prod test”更改為“My prod test - slave 1”。
  2. 我們回到第 5 步,在高級測試屬性裏將 Standalone 更改為 Slave。
  3. 保存,我們現在有九個從集群測試和一個主集群測試。
  4. 回到“My prod test -slave 1”。
  5. 按復制。
  6. 現在,重復步驟 1 到 5,直到創建完所有的九個從集群測試。
  7. 回到“My prod test - slave 9”,並按下復制。
  8. 將測試名稱改為“My prod test -Master”。
  9. 轉到高級測試屬性,並將 Slave 改為 Master。
  10. 檢查剛剛創建的所有從集群測試並按保存。

針對 5 萬用戶的主從測試已準備就緒了。按下主測試的開始按鈕,將啟動 10 個測試(一個主測試和九個從測試),每個測試有 5 千個用戶。

你可以將每個測試(從測試或主測試)更改為來自不同的區域,具有不同的腳本 /csv/ 其他文件,使用不同的網絡模擬器或不同的參數。

主測試和從測試的匯總報告將在主測試報告中的一個叫作“Master load results”的新選項卡中找到,打開這個報告就可以看到每個測試的結果。

參考資料

https://www.infoq.cn/article/RerBmEGbR42bDI-eTeQG

轉 如何進行 5 萬並發用戶負載測試?