分布式压测

1、为什么使用分布式压测?

大家在使用jmeter压测过程中,可能会度遇到内存溢出的错误,这是为什么呢?
因为jmeter是java写的应用,java应用jvm堆内存heap受负载机硬件限制,虽然我们可以调整堆内存大小,但是单机无法支撑数以万计大并发,此时,需要多个负载机进行分压测试,这样性能瓶颈就不会是我们的负载机了。

2、分布式压测的原理

jmeter分布式压测时,选择其中一台作为控制机,其余的机器做为负载机
执行时,控制机会把脚本发送到每个负载机上,负载机获取到脚本就执行脚本(负载机只需要启动jmeter-server.bat或者jmeter-server)。
执行后,负载机回传执行结果给控制机,控制机会进行汇总。值得注意的是:如果请求执行成功,不会回传请求的响应信息,所以在查看结果树中, 响应结果看到是空的。
分布式压测

3、分布式压测注意事项

A:防火墙关闭
B:负载机和压力机安装的jdk和jmeter的版本一致
C:确保负载机和控制机在同一局域网,服务之间能联通
D:已经为RMI远程方法调用(Remote Method Invocation)设置了SSL或禁用了它

4.具体实现

4.1 负载机和压力机安装JDK和jmeter,这里我的负载机安装在linux环境,控制机安装在Windows环境,控制机即作为压力机又作为负载机

4.2 设置SSL

A:控制机bin目录下,点击:create-rmi-keystore.bat,根据提示一直填下去,遇到Yes与No就直接填y,然后回车就ok了,回车后生成文件:rmi_keystore.jks
分布式压测
B:复制控制机生成的rmi_keystore.jks到每一台负载机jmeter的bin目录下

4.3 修改负载机system.properties,并启动负载机,日志记录在bin目录下的jmeter-server.log下面

A:修改负载机system.properties,设置IP地址
java.rmi.server.hostname=192.168.199.223
分布式压测
B:启动负载机
./jmeter-server
分布式压测

4.4 修改控制机的配置文件

A:修改控制机system.properties,设置IP地址
java.rmi.server.hostname=192.168.199.149
B:修改控制机的jmeter.properties,设置远程地址
remote_hosts=192.168.199.223:1099,192.168.199.149:1099
server_port=1099
分布式压测
C:控制机又作为负载机,启动
./jmeter-server
D:查看两台负载机添加成功
分布式压测

4.5 开始执行脚本,两种方式

A:通过GUI方式,打开控制机,导入脚本,点击【Remote Start All】,执行压力测试
分布式压测
B:通过非GUI命令行方式远程启动
单台负载机
jmeter -n -t 脚本绝对路径名.jmx -l 要保存的结果绝对路径名.jtl -H 192.168.199.223 -P 1099
分布式压测

多台负载机
jmeter -n -t 脚本绝对路径名.jmx -l 要保存的结果绝对路径名.jtl -R 192.168.199.199:1099,192.168.149.223:1099
分布式压测
参考链接:
https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
https://www.cnblogs.com/UncleYong/p/10854152.html