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

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

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

