日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

如何进行5万并发用户负载测试?

發(fā)布時(shí)間:2025/6/15 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何进行5万并发用户负载测试? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文將介紹運(yùn)行5萬并發(fā)用戶測試所需要的步驟(該測試用戶量最多可達(dá)200萬)。

步驟概述

  • 編寫腳本;
  • 使用JMeter進(jìn)行本地測試;
  • BlazeMeter沙箱測試;
  • 使用一個(gè)控制臺和一個(gè)引擎,設(shè)置每個(gè)引擎的用戶數(shù)量;
  • 設(shè)置和測試集群(一個(gè)控制臺和10到14個(gè)引擎);
  • 使用主從功能達(dá)到最大并發(fā)量目標(biāo)。
  • 第1步:編寫腳本

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

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

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

  • 使用BlazeMeter Chrome插件記錄測試步驟;
  • 使用JMeter HTTP(S)測試腳本記錄器設(shè)置代理,運(yùn)行測試,并記錄所有內(nèi)容;
  • 從頭開始手動操作并構(gòu)建所有內(nèi)容(主要針對功能/QA測試)。
  • 如果你的腳本是通過錄制得到(如上面的步驟1和2),請記住:

  • 你需要修改某些參數(shù),例如用戶名和密碼,或者使用包含這些參數(shù)的CSV文件,這樣每個(gè)用戶都可以是唯一的。
  • 你可能需要使用正則表達(dá)式、JSON路徑提取器、XPath提取器來提取各種元素(如Token-String、Form-Build-Id等),以便完成“AddToCart”、“Login”之類的請求。
  • 保持腳本參數(shù)化,并可以使用配置元素(例如HTTP請求默認(rèn)值),以便可以更方便地切換環(huán)境。
  • 第2步:使用JMeter進(jìn)行本地測試

    開始調(diào)試腳本,一個(gè)線程,進(jìn)行一次迭代,使用View Results Tree、Debug Sampler、Dummy Sampler和打開的Log Viewer(以防出現(xiàn)JMeter錯誤)。

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

    在使用一個(gè)線程成功運(yùn)行腳本后,將線程數(shù)提升到10到20個(gè),時(shí)間為10分鐘:

  • 如果你希望每個(gè)用戶都是唯一的——結(jié)果是這樣的嗎?
  • 有發(fā)生任何錯誤嗎?
  • 如果你正在進(jìn)行注冊過程測試,請看一下后端——是否根據(jù)你的模板創(chuàng)建了帳戶?它們是唯一的嗎?
  • 從摘要報(bào)告中可以看到有關(guān)測試的統(tǒng)計(jì)信息——它有意義嗎?找到平均響應(yīng)時(shí)間、錯誤、命中率/秒。
  • 在腳本準(zhǔn)備好之后:

  • 刪除Debug/Dummy Samplers和腳本監(jiān)聽器;
  • 如果你使用了監(jiān)聽器(例如“將響應(yīng)保存到文件”),請確保沒有使用任何路徑!對于監(jiān)聽器或CSV數(shù)據(jù)集配置,請確保沒有使用本地路徑。相反,只使用文件名,就好像它與腳本位于同一文件夾中一樣。
  • 如果你使用了專有的JAR文件,請務(wù)必將它上傳。
  • 如果你使用了多個(gè)線程組(或不是默認(rèn)線程組),請確保在將其上傳到BlazeMeter之前設(shè)置好這些值。
  • 第3步:BlazeMeter沙箱測試

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

    沙箱允許你對腳本和后端進(jìn)行測試,確保BlazeMeter一切正常。

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

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

  • 防火墻——確保你的環(huán)境對BlazeMeter CIDR列表(正在不時(shí)更新)是開放的,并將它們列入白名單;
  • 確保所有測試文件(例如CSV、JAR、JSON、User.properties等)都在;
  • 確保沒有使用任何本地路徑。
  • 如果還有問題,請查看日志中的錯誤(你應(yīng)該可以下載整個(gè)日志)。

    沙箱配置可以是這樣的:

    • 引擎:僅限控制臺(一個(gè)控制臺,0個(gè)引擎)
    • 線程:50-300
    • 加速時(shí)間:20分鐘
    • 迭代:永遠(yuǎn)
    • 持續(xù)時(shí)間:30-50分鐘

    你可以在加速期間獲得足夠的數(shù)據(jù),分析一下結(jié)果,確保腳本按預(yù)期執(zhí)行。

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

    另外,還要看一下監(jiān)控選項(xiàng)卡,看看使用了多少內(nèi)存和CPU——這有助你完成步驟4,到時(shí)你可以嘗試設(shè)置每個(gè)引擎的用戶數(shù)。

    第4步:使用一個(gè)控制臺和一個(gè)引擎設(shè)置每個(gè)引擎的用戶數(shù)量

    在確信腳本可以在BlazeMeter中完美運(yùn)行之后,我們需要弄清楚一個(gè)引擎可以支持多少用戶。

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

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

    將測試配置設(shè)置為:

    • 線程數(shù):500
    • 加速時(shí)間:40分鐘
    • 迭代:永遠(yuǎn)
    • 持續(xù)時(shí)間:50分鐘

    接下來,使用一個(gè)控制臺和一個(gè)引擎。

    運(yùn)行測試,并通過監(jiān)控選項(xiàng)卡監(jiān)控測試引擎。

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

    • 將線程數(shù)改為700,并再次運(yùn)行測試;
    • 提高線程數(shù),直到獲得1000個(gè)線程或60%的CPU/內(nèi)存使用率。

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

    • 注意第一次達(dá)到75%的時(shí)間點(diǎn),然后查看當(dāng)時(shí)有多少用戶。
    • 再次運(yùn)行測試,這次使用從上一次測試中獲得的用戶數(shù)量。
    • 這一次,使用實(shí)際測試的加速時(shí)間(5到15分鐘是一個(gè)不錯的值),并將持續(xù)時(shí)間設(shè)置為50分鐘。
    • 確保在整個(gè)測試過程中不要超過75%的CPU或85%的內(nèi)存使用率。

    為了安全起見,可以為每個(gè)引擎減少10%的線程數(shù)。

    第5步:設(shè)置和測試集群

    我們現(xiàn)在知道一個(gè)引擎可以支持多少線程。在這一步結(jié)束時(shí),我們將知道一個(gè)集群(測試)可以支持的用戶數(shù)量。

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

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

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

    在測試運(yùn)行時(shí),請轉(zhuǎn)到監(jiān)控選項(xiàng)卡,并驗(yàn)證:

  • 不會有引擎超過75% CPU或85%內(nèi)存限制;
  • 找到控制臺標(biāo)簽。轉(zhuǎn)到日志選項(xiàng)卡-\u0026gt;網(wǎng)絡(luò)信息,查找控制臺的私有IP,這樣就可以找到控制臺的名稱。它不應(yīng)達(dá)到75% CPU或85%內(nèi)存限制。
  • 如果控制臺達(dá)到了這些限制,請減少引擎數(shù)量,并再次運(yùn)行測試,直到控制臺處于這些限制范圍內(nèi)。

    在這個(gè)步驟結(jié)束時(shí),你就會知道:

  • 每個(gè)集群可以支持的用戶數(shù)量;
  • 每個(gè)集群可以達(dá)到的命中次數(shù)。
  • 在負(fù)載結(jié)果圖下的聚合表中查找其他統(tǒng)計(jì)信息,獲取有關(guān)集群吞吐量的更多信息。

    第6步:使用主從功能達(dá)到最大并發(fā)量目標(biāo)

    我們已經(jīng)到了最后一個(gè)階段。

    我們已經(jīng)知道腳本可以正常運(yùn)行,還知道一個(gè)引擎可以支持多少用戶以及一個(gè)集群可以支持多少用戶。

    我們假設(shè)有這些值:

    • 一個(gè)引擎可以支持500個(gè)用戶;
    • 集群將有12個(gè)引擎;
    • 我們的目標(biāo)是進(jìn)行5萬用戶的測試。

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

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

    我們將為每個(gè)集群使用10個(gè)引擎,而不是12個(gè),這樣每個(gè)集群的用戶數(shù)可以達(dá)到10 * 500 = 5千。然后再使用10個(gè)集群,就可以達(dá)到5萬的規(guī)模。

    這將有助于我們:

  • 不需要維護(hù)兩種不同的測試類型;
  • 可以通過簡單地復(fù)制現(xiàn)有的集群每次增長5千(5千比6千更常見);
  • 如果有需要,我們可以隨時(shí)添加更多的集群。
  • 我們現(xiàn)在準(zhǔn)備好用5萬用戶創(chuàng)建最終的主從測試:

  • 將測試名稱從“My prod test”更改為“My prod test - slave 1”。
  • 我們回到第5步,在高級測試屬性里將Standalone更改為Slave。
  • 保存,我們現(xiàn)在有九個(gè)從集群測試和一個(gè)主集群測試。
  • 回到“My prod test -slave 1”。
  • 按復(fù)制。
  • 現(xiàn)在,重復(fù)步驟1到5,直到創(chuàng)建完所有的九個(gè)從集群測試。
  • 回到“My prod test - slave 9”,并按下復(fù)制。
  • 將測試名稱改為“My prod test -Master”。
  • 轉(zhuǎn)到高級測試屬性,并將Slave改為Master。
  • 檢查剛剛創(chuàng)建的所有從集群測試并按保存。
  • 針對5萬用戶的主從測試已準(zhǔn)備就緒了。按下主測試的開始按鈕,將啟動10個(gè)測試(一個(gè)主測試和九個(gè)從測試),每個(gè)測試有5千個(gè)用戶。

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

    主測試和從測試的匯總報(bào)告將在主測試報(bào)告中的一個(gè)叫作“Master load results”的新選項(xiàng)卡中找到,打開這個(gè)報(bào)告就可以看到每個(gè)測試的結(jié)果。

    英文原文:https://dzone.com/articles/how-to-run-a-load-test-of-50k-concurrent-users

    總結(jié)

    以上是生活随笔為你收集整理的如何进行5万并发用户负载测试?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。