Jmeter的分布式测试

一. 分布式测试

分布式应用(distributed application)指的是应用程序分布在不同计算机上,通过网络来共同完成一项任务的工作方式。性能测试当中,负载机的性能会对性能测试的执行产生影响。作为Java应用程序,Jmeter运行时也需要一定的资源,当性能测试的模拟的并发过大时,负载机的CPU,内存等会被大量消耗,经常会出现Java内存溢出的错误,往往导致负载机成为测试瓶颈。Jmeter提供了分布式操作的功能,用户可以通过扩展负载机的方式来解决单台机器负载过大的问题。

二. Jmeter分布式测试模型

按照分布式的架构,Jmeter会将一台机器作为master控制机,其他机器作为slave代理机。Master控制机只有一个,slave代理机可以有多个。

Master控制机的任务,是向salve机发送命令,并从slave机接收返回信息,收集测试数据。Master机最终展示的数据,是全部slave机测试数据的集合。Slave机的任务,是执行接收的命令,并向控制机返回测试结果数据。Slave机是通过命令行执行任务的,所以,不需要启动Jmeter GUI操作界面。

三. Jmeter分布式运行前的配置

首先对Slave机进行配置:

Step1:安装JDK,Jmeter,配置好环境变量。

Step2:通过“ipconfig”命令,查看IP地址。

机器上可能有多个网卡,一般我们都是在内网环境下执行测试的,所以我们需要的是内网IP,不要选错了。

Step3:打开${Jmeter_PATH}/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=10.27.33.11:1099,1099是默认端口号,可根据需要改成其他端口。

Step4:启动${Jmeter_PATH}/bin/jmeter-server.bat服务。

其他slave机依照此步骤一样配置就好。注意,各机器之间,JDK,Jmeter版本最好保持一致,文件放置的目录也最好保持一致。不过有了Docker,slave机都是从master机复制过来的,所以,一般问题不大。

Master机的配置:

前2步和slave机前2步一样。

Step1:安装JDK,Jmeter,配置好环境变量。

Step2:通过“ipconfig”命令,查看IP地址。

Step3:打开${Jmeter_PATH}/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”, 在master机上,把所有slave机的IP:端口都写在这里,并用逗号分隔。

Step4:启动${Jmeter_PATH}/bin/jmeter-server.bat服务。

配置完毕。在执行前,将测试需要的jmx文件和相关的csv,txt等数据文件放置在各机器上,路径注意要一致。然后,在master机上打开Jmeter,从Run->Remote Start可以看到所有的slave机(IP:端口)。

设置线程生产数据,点击Run->Remote Start->Remote Start All。

执行结束,因为执行了3台负载机,所以最后的samples数量是10x3=30.

Slave机的控制台信息如图。

四. 下面是几个坑,有很多是网上各位前辈总结的,一起列在这里。

(1).环境及数据问题。

前面也提过了,尽量保持各机器之间环境一致,jmx和数据文件放置的目录一致。否则运行时,master控制机会接收不到返回数据。

(2).机器之间出现拒绝连接的Exception

“Connection refused xxxx”,出现这种情况,可能是你的防火墙未关闭;又或者是机器不在一个网段内,最好都用内网IP。

(3).自定义端口

如果用的是自定义端口,找到jmeter.properties文件,修改如下两个配置项,比如改为1089:

server_port=1089

server.rmi.localport=1089

修改后,重启jmeter-sever.bat即可。

(4).jmeter-sever.bat启动后,IP不是内网

这个是多网卡造成的,很多时候启动的是公网的IP,而我们配置的是内网。

修改jmeter-sever.bat,

修改jmeter.bat:

新增set rmi_host=-Djava.rmi.server.hostname=本机ip;

修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% % rmi_host%

修改后,重启jmeter-sever.bat

原文地址:https://www.cnblogs.com/xbxblog/p/9567603.html

时间: 2024-08-05 22:31:27

Jmeter的分布式测试的相关文章

Jmeter 分布式测试

Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误.为了让jmeter工具提供更大的负载能力,jmeter短小精悍一有了使用多台机器同时产生负载的机制. 那么,是如何实现多台负载机同时运行的呢?当然不会多个人坐在多台负载机面前,一喊开始,大家同时启动jmeter.这种方式很笨,也很难达到真正的同步.其实,我们通过单个jmeter 客户端就可以控制多个远程的jmeter服务

Jmeter分布式测试

在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分布式执行原理: 1.Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave). 2.执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的. 3.执行完成后,

(九) 使用Jmeter 做分布式压测 ;

在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分布式执行原理: 1.Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave). 2.执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的. 3.执行完成后,

【Fine原创】JMeter分布式测试中踩过的那些坑

最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具.因为一直使用jmeter的GUI模式进行脚本设计,到测试执行阶段工具本身对资源的过量消耗给性能测试带来了瓶颈,一般线程加到100左右就会出现工具本身无法支撑的问题,广泛了解解决办法后,发现分布式部署测试机仍是首选方案. 关于如何配置jmeter分布式部署测试机很多博客上已经描述得很详细了,这里就不再赘述,可以参考虫师的博客: http://www.cnblogs.com/fnng/archive/2012/

Jmeter以non-gui模式进行分布式测试

由于Jmeter是一个纯JAVA的应用,用GUI模式运行压力测试时,对客户端的资源消耗是相当惊人的,所以在进行正式的压测时一定要使用non-gui模式运行,如果并发数很高或者客户端的硬件资源比较一般的话,还可以以server模式用多个client进行分布式测试.一直有朋友问我这个分布式测试要怎么用,我就结合官方文档和自己的实际经验来谈一谈. 首先请先确保你的系统中环境都准备好了,否则在执行下文中的一些操作时可能会有一些异常抛出导致脚本执行失败 前置工作 JAVA_HOME正确设置(如果不会,请自

Jmeter 分布式测试配置方法

利用JMeter进行负载测试的时候,使用单台机器模拟测试超过1000个行程的并发就有些力不从心,在执行的过程中,JMeter自身会自动关闭,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的 Agent 来分担 JMeter自身的压力,并借此来获取更大的并发用户数,但是需要进行相关的一些修改,具体如下: 1.在所有期望运行 JMeter 作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent.然后运行所有

转 : jmeter分布式测试的坑

有关jmeter分布式测试的环境配置,大概就是那样,但是每次想要进行jmeter分布式测试的时候,总是会有各种奇怪的问题,下面整理了一些可能遇到的坑. 只要错误中出现:Error in rconfigure() method java.rmi.ConnectException:Connection refused to host:10.10.34.21;nested exception is:java.net.ConnectException:connection timed out:conne

【转】 JMeter学习(三十)以non-gui模式进行分布式测试

由于Jmeter是一个纯Java的应用,用GUI模式运行压力测试时,对客户端的资源消耗是相当惊人的,所以在进行正式的压测时一定要使用non-gui模式运行,如果并发数很高或者客户端的硬件资源比较一般的话,还可以以server模式用多个client进行分布式测试.一直有朋友问我这个分布式测试要怎么用,我就结合官方文档和自己的实际经验来谈一谈. 首先请先确保你的系统中环境都准备好了,否则在执行下文中的一些操作时可能会有一些异常抛出导致脚本执行失败 前置工作 JAVA_HOME正确设置(如果不会,请自

Jmeter分布式测试的坑

有关jmeter分布式测试的环境配置,大概就是那样,但是每次想要进行jmeter分布式测试的时候,总是会有各种奇怪的问题,下面整理了一些可能遇到的坑. 问题:如果你的服务器名字和报错的时候显示的服务器名不一致(refuse to host:10.10.34.21,而服务器名明明是172.16.129.43) 方案:这是服务器双网卡造成的问题 在linux上 修改jmeter-server RMI_HOST_DEF=-Djava.rmi.server.hostname=slave机器名 在wind