什么是分布式?
- 普通压测:单台机可以对目标机器产生的压力比较小,受限因素包括CPU,网络,IO等
- 分布式压测:利用多台机器向目标机器产生压力,模拟几万用户并发访问
分布式原理
1. 一台电脑作为控制机(Master),其它电脑做为执行机(Slave);
2. 执行时,控制机会把脚本发送到每台执行机上,执行机拿到脚本后就开始执行
3. 执行机执行时不需要启动Jmeter界面,可以理解它是通过命令行模式执行的
4. 执行完成后,执行机会把结果回传给控制机,控制机会收集所有执行机的信息并汇总
执行机Slave需要的操作
1、安装与控制机同版本的Jmeter
2、修改配置
bin》jmeter.properties》server_port=1099
注:
1) 1099:为执行机自定义端口号
2) 去除备注符号 #
3) 自定义端口号时,注意选择未必占用端口号
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
3、启动jmeter-server.bat或者jmeter-server
启动之后效果
遇到的问题
这个是开始没有找到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) 多个执行机之间使用逗号(,)隔开
2、线程数设置
当需要1000个用户并发时,两台执行机,线程数设置500即可
3、控制机-运行分布式执行机
菜单-运行->选择全部启动或者快捷键->Ctrl+Shift+R
效果查看
Master控制机聚合报告
Salve执行机的cmd窗口监控效果,每个staring和finished代表一个请求