環(huán)境準(zhǔn)備
- jmeter5.4.1。去官方下載即可:Apache JMeter - Download Apache JMeter
- jdk1.8
機(jī)器準(zhǔn)備
| 系統(tǒng) | ip | 角色 |
|---|---|---|
| window10 本地 | 192.168.18.1 | master |
| centos7 | 192.168.18.139 | slave |
| centos7 | 192.168.18.138 | slave |
說(shuō)明:
- master機(jī)器放在window上,是方便在本地測(cè)試。你也可以部署在linux上,都是可以的
- master和slave使用的jmeter版本要一致
部署slave
修改 jmeter.properties (在bin目錄下)配置文件
#設(shè)置端口,默認(rèn)是1099,根據(jù)個(gè)人情況進(jìn)行設(shè)置
#server_port=1099
# 把這個(gè)設(shè)置成true,禁用ssl。這個(gè)默認(rèn)是false,被注釋掉了,打開(kāi)注釋
server.rmi.ssl.disable=true
啟動(dòng)服務(wù)
# 進(jìn)入bin目錄下
./jmeter-server
# 如果啟動(dòng)報(bào)了這個(gè)錯(cuò):An error occurred: Cannot start. localhost.localdomain is a loopback address??梢允褂孟旅婷顔?dòng)
./jmeter-server -Djava.rmi.server.hostname=192.168.18.138

啟動(dòng)成功后,可以看到endpoint信息。這個(gè)port: 33200每次啟動(dòng)都不一樣。因?yàn)槟壳坝貌坏竭@個(gè)port,所以可以暫時(shí)不改。
如果想使用固定的port,可以修改jmeter.properties

按照上面部署,把兩個(gè)slave 都部署起來(lái)就行
部署master
同樣是修改jmeter.properties配置
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1,192.168.18.138:1029,192.168.18.139:1029
#remote_hosts=localhost:1099,localhost:2010
# 禁用ssl
server.rmi.ssl.disable=true
設(shè)置remote_hosts。
master節(jié)點(diǎn),本身也可以做為服務(wù),如果你想讓master也做為服務(wù),則master節(jié)點(diǎn)也需要去bin目錄下執(zhí)行
# 啟動(dòng)服務(wù)
./jmeter-server
這里我就不啟動(dòng)了。只用slave節(jié)點(diǎn)測(cè)試
測(cè)試驗(yàn)證
通過(guò)GUI的方式

打開(kāi)jmeter頁(yè)面。run的時(shí)候選擇一個(gè)節(jié)點(diǎn),也可以start All。
這里我們選擇192.168.18.138機(jī)器

去138機(jī)器上,看多了這兩行日志
通過(guò)命令的形式啟動(dòng)
# linux上
/root/jmeter/bin/jmeter -n -t test.jmx -R 192.168.18.138:1029,192.168.18.139:1029 -l result.jtl
# window上
/root/jmeter/bin/jmeter.bat -n -t test.jmx -R 192.168.18.138:1029,192.168.18.139:1029 -l result.jtl
分布式集群的原理
JMeter分布式執(zhí)行時(shí),選擇其中一臺(tái)作為調(diào)度機(jī)(master),其他機(jī)器作為執(zhí)行機(jī)(slave);master會(huì)在本地編輯好jmx壓測(cè)腳本,執(zhí)行時(shí),master將jmx腳本發(fā)送至slave上,slaver執(zhí)行時(shí)不需要啟動(dòng)jmeter,只需要把jmeter-sever.bat文件打開(kāi)以非GUI形式執(zhí)行;slave執(zhí)行完畢后將結(jié)果回傳給master,并由master進(jìn)行結(jié)果的匯總;簡(jiǎn)單來(lái)說(shuō)能達(dá)到的效果也就是:比如我在JMeter jmx腳本中設(shè)立的線程數(shù)是100,我在本地單機(jī)運(yùn)行就會(huì)產(chǎn)生100次請(qǐng)求。如果我有1臺(tái)master機(jī)器,2臺(tái)slave機(jī)器,那么每次會(huì)向服務(wù)器發(fā)送的請(qǐng)求數(shù)總共就是100*3次。
執(zhí)行期間,result.jtl里面的日志是實(shí)時(shí)更新的。