Jmeter性能测试分布式部署
当模拟大量并发时,对运行机器的性能/网络负载会很大。此时就需要使用jmeter的分布式部署功能,实现多台被控机器同时并发访问被测系统。
为什么要分布式部署?
当模拟大量并发时,对运行机器的性能/网络负载会很大。
此时就需要使用jmeter的分布式部署功能,实现多台被控机器同时并发访问被测系统。
Jmeter分布式执行原理
1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,它应该是通过命令行模式执行的。
3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
准备工作:
1.在所有机器上,安装相同版本的jmeter和JDK
2.控制机与执行机在同一局域网(需要确保各个服务器之间可以互相ping或telnet,不然会影响发送和接收相关信息)
3.把所有机器的防火墙关闭 或者 开放端口,否则很可能会连接失败
步骤一:修改slave负载机端(分机)
打开jmeter bin目录下的jmeter.properties文件
1、配置远程端口号:server_port

2、设置远程执行模式
设置配置文件:#mode=Standard前面的#注释去掉
#server.rmi.ssl.disable=false 修改为:server.rmi.ssl.disable=true并且将前面的#注释去掉 禁用ssl


步骤二:修改master控制端(总机)
打开jmeter bin目录下的jmeter.properties文件
1、如下图:在remote_hosts处添加负载机的IP+端口,多个负载机之间用,逗号分割
控制机也可作为负载机使用,不建议。如果控制端也要作为负载机使用,则在server_port处添加本机服务器端口

2、#server.rmi.ssl.disable=false 修改为:server.rmi.ssl.disable=true并且将前面的#注释去掉。
#mode=Standard前面的#注释去掉。这个操作是为了让主控机在执行后在察看结果树下能看到返回的响应信息(repsonse body)
步骤三:负载机启动server
所有slave负载机,在jmeter的bin目录下,运行jmeter-server.bat文件;

步骤四:启动控制端master,执行性能测试
方法一:直接启动控制端的GUI
在Run的Remote Start中,可以看到之前在控制端配置的IP,代表可选择的负载机。
执行Remote Start All,则会执行之前在控制端jmeter.properties文件中配置的所有虚拟机。

执行成功后,负载机的命令行会显示执行成功信息。

执行成功后,在控制端GUI的聚合报告可查看到执行结果。

方法二:命令行执行。实际测试时需要使用命令行执行
GUI仅适用于调试,不可用于负载测试
打开CMD命令行,输入如下:
jmeter -n -t [脚本路径] -l [结果文件路径] -e -n [web报告路径]
例如:
jmeter -n -t D:\JmeterDoc\testPractice.jmx -R 192.168.2.20:2099,192.168.2.15:2098 -l D:\JmeterDoc\testPracticeResult.txt -e -o D:\JmeterDoc\testPracticeWebReport

使用命令行执行完并发性能测试后,即可在填写的路径下打开报告查看

注意事项
1、分布式并不是将一个jmeter脚本的请求分送给各个slave机器执行,而是在多个slave机器上同时执行jmeter脚本请求,所以如果线程为10,循环为1,请求为1,slave服务器为2台,那么两台机器同时启动所发送的请求为10*1*1*2=20次。
2、如有参数化,参数文件地址要相同(如果jmeter测试脚本需要调用外部变量即csv文件等,需要将csv文件赋值到各个slave机器上的相同路径下,不然在slave机器运行时会取不到数据,建议使用相对路径,将文件拷贝到jmeter的bin目录下)
3、使用多个Linux服务器时,尽量保证多个服务器的时区相同,不然返回的结果时间可能会存在误差
4、jmeter脚本添加了插件无法正常远程运行
更多推荐


所有评论(0)