Jmeter 分布式

什么是分布式?

- 普通压测:单台机可以对目标机器产生的压力比较小,受限因素包括CPU,网络,IO等

- 分布式压测:利用多台机器向目标机器产生压力,模拟几万用户并发访问

分布式原理

1. 一台电脑作为控制机(Master),其它电脑做为执行机(Slave);
2. 执行时,控制机会把脚本发送到每台执行机上,执行机拿到脚本后就开始执行
3. 执行机执行时不需要启动Jmeter界面,可以理解它是通过命令行模式执行的
4. 执行完成后,执行机会把结果回传给控制机,控制机会收集所有执行机的信息并汇总

Jmeter 分布式_第1张图片

 执行机Slave需要的操作

1、安装与控制机同版本的Jmeter

2、修改配置

bin》jmeter.properties》server_port=1099

注:
    1) 1099:为执行机自定义端口号
    2) 去除备注符号 # 
    3) 自定义端口号时,注意选择未必占用端口号

Jmeter 分布式_第2张图片

server.rmi.ssl.disable=false,改为true,并把前面的#去掉

如果未修改,启动执行机的启动文件时会出现下面问题

Could not find ApacheJmeter_core.jar ...
... Trying JMETER_HOME=..
Found ApacheJMeter_core.jar
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
        java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
An error occurred: Listen failed on port: 0; nested exception is:
        java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
errorlevel=1

Jmeter 分布式_第3张图片

3、启动jmeter-server.bat或者jmeter-server

Jmeter 分布式_第4张图片

启动之后效果

Jmeter 分布式_第5张图片

 遇到的问题

这个是开始没有找到ApacheJmeter_core.jar,后来去JMETER_HOME目录下去查找,最后找到了,如果不希望看到Could not find的字样,可以配置一下jmeter_home的路径(即bin目录的上一级目录),这样启动jmeter-server服务时,就只会看到Found ApacheJMeter_core.jar

配置方法参考

https://jingyan.baidu.com/article/d3b74d648d594d5e77e609e4.html

Could not find ApacheJmeter_core.jar ...
... Trying JMETER_HOME=..
Found ApacheJMeter_core.jar
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.15.81.189:57339](local),objID:[-7643ced2:17ad7dd74db:-7fff, -4305003287771848643]]]

控制机Master需要的操作

1、修改配置(添加执行机ip)

bin》jmeter.properties》remote_hosts=127.0.0.1:1099,127.0.0.1:1100

注:
    1) remote_hosts:为执行机IP地址和端口号
    2) 多个执行机之间使用逗号(,)隔开

 Jmeter 分布式_第6张图片

2、线程数设置

当需要1000个用户并发时,两台执行机,线程数设置500即可

Jmeter 分布式_第7张图片

3、控制机-运行分布式执行机

 菜单-运行->选择全部启动或者快捷键->Ctrl+Shift+R

Jmeter 分布式_第8张图片

效果查看

Master控制机聚合报告

Jmeter 分布式_第9张图片

Salve执行机的cmd窗口监控效果,每个staring和finished代表一个请求

Jmeter 分布式_第10张图片

 

你可能感兴趣的:(jmeter)