如何模擬一次超過 5 萬的并發(fā)用戶?
閱讀本文大概需要 7 分鐘。
前言
步驟1 : 編寫你的腳本
步驟2 : 使用JMeter進(jìn)行本地測試
步驟3 : BlazeMeter沙箱測試
步驟4 : 使用1個控制臺和1個引擎來設(shè)置每個引擎用戶的數(shù)量
步驟5:安裝并測試集群
步驟 6 : 使用 Master / Slave 特性來達(dá)成你的最大CC目標(biāo)
編寫你的腳本
使用JMeter進(jìn)行本地測試
BlazeMeter沙箱測試
使用一個控制臺和一個引擎設(shè)置Users-per-Engine的數(shù)量
設(shè)置并測試你的集合 (1個控制臺和10-14 引擎)
使用 Master / Slave 特性來達(dá)成你的最大CC目標(biāo)

步驟1 : 編寫你的腳本
使用 BlazeMeter 的 Chrome 擴(kuò)展 來記錄你的方案
使用 JMeter HTTP(S) 測試腳本記錄器 來設(shè)置一個代理,那樣你就可以運(yùn)行你的測試并記錄下所有的東西
從頭開始全部手工構(gòu)建(可能是功能/QA測試)
你需要改變諸如Username & Password這樣的特定參數(shù),或者你也許會想要設(shè)置一個CSV文件,有了里面的值每個用戶就可以是不同的.
為了完成諸如“添加到購物車”,“登錄”還有其它這樣的請求,你也許要使用正則表達(dá)式,JSON路徑提取器,XPath提取器,來提取諸如Token字符串,表單構(gòu)建ID還有其它要素
保持你的腳本參數(shù)化,并使用配置元素,諸如默認(rèn)HTTP請求,來使得在環(huán)境之間切換時你的工作更輕松.
步驟2 : 使用JMeter進(jìn)行本地測試
如果你想要每個用戶獨(dú)立——是那樣的么?
有沒有收到錯誤?
如果你在做一個注冊過程,那就看看你的后臺 - 賬戶是不是照你的模板創(chuàng)建好了? 它們是不是獨(dú)立的呢?
從總結(jié)報告中,你可以看到對測試的統(tǒng)計 - 它們有點(diǎn)用么? (平均響應(yīng)時間, 錯誤, 每秒命中率)
通過移除任何調(diào)試和虛擬樣本來清理腳本,并刪除你的腳本偵聽器
如果你使用了偵聽器(諸如 "將響應(yīng)保存到一個文件"),請確保你沒有使用任何路徑! , 而如果他是一個偵聽器或者一個CSV數(shù)據(jù)集配置——請確保你沒有使用你在本地使用的路徑 - 而只要文件名(就好像跟你的腳本在同一個文件夾)
如果你使用了自己專有的JAR文件,請確保它也被上傳了.
如果你使用了超過一個線程組(不是默認(rèn)的那個) - 請確保在將其上傳到BlazeMeter之前設(shè)置了這個值.
步驟3 : BlazeMeter沙箱測試
防火墻 - 確保你的環(huán)境對BlazeMeter的CIDR 列表 (它們會實(shí)時更新)開發(fā),并把它們放入白名單中
確保你所有的測試文件, 比如: CSVs, JAR, JSON, User.properties 等等.. 都可以使用
確保你沒有使用任何路徑
引擎: 是能使控制臺(1 個控制臺 , 0 個引擎)
線程: 50-300
產(chǎn)能提升: 20 分鐘
迭代: 一直測試下去
時間: 30-50 分鐘
步驟4 : 使用1個控制臺和1個引擎來設(shè)置每個引擎用戶的數(shù)量
線程數(shù): 500
產(chǎn)能提升:40 分鐘
迭代: 永久
時長: 50 分鐘
將線程數(shù)調(diào)整到700在測試一次
提交線程的數(shù)量直到線程數(shù)達(dá)到1000或者60%的CPU或內(nèi)存使用
看看你第一次達(dá)到75%的點(diǎn),在那個點(diǎn)有多少并發(fā)用戶.
在運(yùn)行一次測試, 而不是提高你之前500個用戶數(shù)量的產(chǎn)能
這一次將產(chǎn)能提升放到真實(shí)的測試中(5-15 分鐘是一個好的開始) 并將時長設(shè)置為50分鐘.
確保整個測試過程中沒有超過75%的CPU使用率或者85%的內(nèi)存使用率…
步驟5:安裝并測試集群
沒有一個引擎超過CPU75%的占有率和內(nèi)存85%占有率的上限;
定位你的控制臺標(biāo)簽(你可以通過一次點(diǎn)擊Logs Tab->Network Information,查看控制臺私有IP地址來找到它的名字)——它不應(yīng)該達(dá)到CPU75%占有率和內(nèi)存85%占有率的上限。
每個集群的用戶數(shù)量;
每個集群的命中率。
步驟 6 : 使用 Master / Slave 特性來達(dá)成你的最大CC目標(biāo)
一個引擎支持500用戶
一個集群可以用戶12個引擎
我們的目標(biāo)是5萬用戶測試
不用維護(hù)兩個不同的測試類型
我們可以通過簡單的復(fù)制現(xiàn)有集群來增加5K用戶(5K比6K更常見)
只要需要我們可以一直增加
將測試的名稱從"My prod test" 改為"My prod test - slave 1"。
我們回到步驟5,將高級測試屬性(Advanced Test Properties)下的Standalone修改為Slave。
按保存按鈕——現(xiàn)在我們有了一個Master和9個Slave中的一個。
返回你的 "My prod test -slave 1".
按復(fù)制按鈕
接下來重復(fù)步驟1-5直到你創(chuàng)建了9個slave。
回到你的 "My prod test -salve 9" 并按復(fù)制按鈕.
將測試的名稱改為 "My prod test -Master".
將高級測試屬性(Advanced Test Properties) 下的Slave改為Master。
檢查我們剛才創(chuàng)建的所有的Slave(My prod test -salve 1..9)并按保存。

推薦閱讀:
Spring Boot 整合 Quartz 實(shí)現(xiàn) Java 定時任務(wù)的動態(tài)配置
微信掃描二維碼,關(guān)注我的公眾號
朕已閱?

