一、jmeter為什么要做分布式壓測(cè)
jmeter本身的局限性
- 一臺(tái)壓力機(jī)的 Jmeter 支持的線程數(shù)受限于 Jmeter 其本身的機(jī)制和硬件配置(內(nèi)存、CPU等)是有限的
- 由于 Jmeter 是 Java 應(yīng)用,對(duì) CPU 和內(nèi)存的消耗較大,在需要模擬大量并發(fā)用戶數(shù)時(shí),單機(jī)很容易出現(xiàn) JAVA 內(nèi)存溢出的錯(cuò)誤,導(dǎo)致測(cè)試腳本本身就有瓶頸
JVM 堆內(nèi)存的局限性
Java 應(yīng)用的 jvm 堆內(nèi)存 heap 受壓力機(jī)硬件限制,雖然我們可以調(diào)整堆內(nèi)存大小
cmd 啟用 Jmeter GUI 時(shí),也會(huì)有提示
increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
翻譯:增加 Java 堆內(nèi)存來(lái)滿足測(cè)試的要求
但是單機(jī)無(wú)法支撐數(shù)以萬(wàn)計(jì)大并發(fā),此時(shí),需要多個(gè)壓力機(jī)進(jìn)行分布式壓力測(cè)試,這樣性能瓶頸就不會(huì)是我們的壓力機(jī)了
聯(lián)想場(chǎng)景
- 測(cè)試 1000 線程并發(fā)的場(chǎng)景,但單機(jī)只能支持 200 并發(fā)無(wú)法達(dá)到1000
- 通過分布式(5 臺(tái)機(jī)器起)可以模擬 1000 并發(fā)
分布式壓測(cè)
Jmeter 支持分布式壓測(cè),將需要模擬的大量并發(fā)用戶數(shù)分發(fā)到多臺(tái)壓力機(jī),使 Jmeter 擁有更大的負(fù)載量,滿足真實(shí)業(yè)務(wù)場(chǎng)景(高并發(fā)場(chǎng)景)
分布式的最終目的
- 確保壓力機(jī)不會(huì)出現(xiàn)性能瓶頸
- 在后面進(jìn)行性能分析時(shí),不需要考慮壓力機(jī)是否會(huì)導(dǎo)致性能瓶頸的主要原因之一
二、分布式原理
把上面的動(dòng)圖完整看完,就懂了,原理如下:
- Cnotroller 是控制機(jī),Slaves 是多個(gè)壓力機(jī)
- 分布式測(cè)試中,Cnotroller 通過命令行將測(cè)試腳本分發(fā)給所有 Slave
- Slave 不需要啟動(dòng) Jmeter GUI,通過 CLI 模式執(zhí)行測(cè)試
- Slave 執(zhí)行完后,會(huì)把結(jié)果回傳給 Master
- Master 收集所有 Slave 的結(jié)果并匯總成一個(gè)結(jié)果集
注意
- 壓力機(jī)也可以叫:負(fù)載機(jī)、代理機(jī)、執(zhí)行機(jī)、肉雞....各種各樣的名字,但他們都是 Slave
- Master 也可以執(zhí)行測(cè)試腳本,也可以不執(zhí)行只負(fù)責(zé)管理
三、分布式壓測(cè)的前提條件已經(jīng)配置
注意事項(xiàng)
1、保持Contorller和Slave機(jī)器的JDK、jmeter以及插件等配置版本一致;
2、如果測(cè)試數(shù)據(jù)有用到CSV或者其他方式進(jìn)行參數(shù)化,需要將data在每臺(tái)Slave上復(fù)制一份,且讀取路徑必須保持一致;
3、確保Contorller和Salve機(jī)器在同一個(gè)子網(wǎng)里面;
4、檢查防火墻是否被關(guān)閉,端口是否被占用(防火墻會(huì)影響腳本執(zhí)行和測(cè)試結(jié)構(gòu)收集,端口占用會(huì)導(dǎo)致Slave機(jī)報(bào)錯(cuò));
5、分布式測(cè)試中,通過遠(yuǎn)程啟動(dòng)代理服務(wù)器,默認(rèn)查看結(jié)果樹中的響應(yīng)數(shù)據(jù)為空,只有錯(cuò)誤信息會(huì)被報(bào)回;
6、如果并發(fā)較高,建議將Contorller機(jī)設(shè)置為只啟動(dòng)測(cè)試腳本和收集匯總測(cè)試結(jié)果,在配置文件里去掉Contorller機(jī)的IP;
1、修改Contorller配置
打開Contorller機(jī)下jmeter安裝文件下的bin目錄:jmeter.properties文件,搜索remote_hosts=127.0.0.1,將Slave機(jī)的IP和端口寫在后面,比如:
remote_hosts=127.0.0.1:1099,172.16.6.90:1099,172.16.6.91:1099
其中172.16.6.90和172.16.6.90為Slave機(jī)的IP,每個(gè)Agent機(jī)之間用英文半角逗號(hào)隔開,修改保存。注意默認(rèn)端口都為1099
切記不論從主機(jī)器都要修改:server.rmi.ssl.disable=true,并且去掉#,否則會(huì)報(bào)錯(cuò)誤
2、負(fù)載機(jī)
- 首先安裝好jdk和jmeter環(huán)境,具體見我的上一篇文章。然后打開配置文件 /bin/jmeter.properties 找到并取消這段配置的注釋 server.rmi.ssl.disable=false ,false改成true。
# Password of Trust store
#server.rmi.ssl.truststore.password=changeit
#
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true # 改成true
- 輸入命令:jmeter-server -Djava.rmi.server.hostname=172.16.2.114 ,啟動(dòng) anget 節(jié)點(diǎn)。jmeter-server 后面的參數(shù)指定 agent 的 IP
3、啟動(dòng)jemter
啟動(dòng)jmeter后,設(shè)置線程組、配置元件、取樣器、監(jiān)聽器等原件,點(diǎn)擊“運(yùn)行-遠(yuǎn)程啟動(dòng)”:
可以選擇遠(yuǎn)程啟動(dòng)一個(gè)Slave機(jī),或者選擇遠(yuǎn)程全部啟動(dòng),即可進(jìn)行分布式測(cè)試了。
最后如果你想學(xué)習(xí)軟件測(cè)試和需要軟件測(cè)試資料,歡迎加入筆者的交流群:320231853,里面可以免費(fèi)領(lǐng)取軟件測(cè)試+自動(dòng)化測(cè)試資料+軟件測(cè)試面試寶典+簡(jiǎn)歷模版+實(shí)戰(zhàn)項(xiàng)目+面試刷題工具和大佬答疑解惑,我們一起交流一起學(xué)習(xí)!
搜索文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-747310.html
復(fù)制文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-747310.html
到了這里,關(guān)于一文2000字從0到1手把手教你jmeter分布式壓測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!