Jmeter 分布式测试

Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,jmeter短小精悍一有了使用多台机器同时产生负载的机制。

  那么,是如何实现多台负载机同时运行的呢?当然不会多个人坐在多台负载机面前,一喊开始,大家同时启动jmeter。这种方式很笨,也很难达到真正的同步。其实,我们通过单个jmeter 客户端就可以控制多个远程的jmeter服务器,使它们同步的对服务器进行压力测试。

  通过远程运行jmeter,测试人员可以跨越多台低端计算机复制测试,这样就可以模拟一个比较大的服务器压力,一个jmeter客户端实例,理论上可以控制任意多的远程jmeter实例,并通过他们收集测试数据。这样一样,就有了如下特性:

*   保存测试采样数据到本地机器

*   通过单台机器管理多个jmeter执行引擎。

*   没有必要将测试计划复制到每一台机器,jmeter GUI客户端会将它发往每一台jmeter服务器。

*   每一台jmeter远程服务器都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划。

  在1.4G Hz~3GHz 的CPU 、1GB 内存的 JMeter 客户端上,可以处理线程 100~300。但是Web Service 例外。XML处理是 CPU 运算密集的,会迅速消耗掉所有的CPU 。一般来说,以XML技术为核心的应用系统,其性能将是普通Web 应用的 10%~25% 。另外,如果所有负载由一台机器产生,网卡和交换机端口都可能产生瓶颈,所以一个JMeter 客户端线程数不应超过 10 0 。

  采用JMeter 远程模式并不会比独立运行相同数目的非GUI 测试更耗费资源。但是,如果使用大量的JMeter 远程服务器,可能会导致客户端过载,或者网络连接发生拥塞。

使用多台机器产生负载的操作步骤如下:

(1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。然后运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.0.100 和192.168.0.101 作为agent)

(2)在controller机器的jmeter的bin目录下,找到jmeter.properties 文件,编辑该文件:

查找:
remote_hosts=127.0.0.1
修改为:
remote_hosts=192.168.0.100:1099,192.168.0.101:1099 

  这里要特别注意端口后,有些资料说明端口1644为jmeter的controller 和agent 之间进行通信的默认RMI端口号,但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机子是否开启了防火墙等。

(3)启动controller 机子上的jmeter应用,选择菜单“运行”--->“远程启动”,来分别启动agent ,也可以直接选择“远程全部启动”来将所有的agent启动。

Jmeter 分布式配置

Jmeter 分布式配置

在使用Jmeter进行性能测试时,如果并发数比较大(比如项目需要支持上万的并发量),单台PC的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能。 
根据目前PC的配置:4.00G内存,可以最多达到2000左右的并发数量。那么对于支持上万的并发量,一台PC是很难实现的。 
Jmeter分布式执行原理 
1 Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。 
2 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。 
3 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。 
执行机(slave)配置 
1 slave机上需要安装Jmeter,具体如何安装这里不详细介绍了。 
2 添加环境变量:JMETER_HOME=D: \apache-jmeter-3.0,此处为你Jmeter的路径 
3 启动bin目录下的:jmeter-server.bat,启动成功如下图: 

4 上图上标红的IP和端口会在master里配置时用到。IP就是slave机器IP,端口默认是1099. 
5 如果需要多台slave的话,那么重复1~4步骤就好。 
调度机配置 
1 找到Jmeter的bin目录下,Jmeter.properties 文件,修改如下配置,IP和Port是Slave机的IP以及自定义的端口(这里端口自定义为1000) 
remote_hosts=192.168.xx.xx:1099,192.168.aa.bb:1099 
多台slave之前使用 ‘, ‘ 隔开,我这里使用了2台,可以看到粗字体的是slave机子的IP和Port。 
2 打开Jmeter,选择运行,再选择远程启动,可以看到:


4 选择远程启动?192.168.aa.bb:1099 
5 master结果,这里我只启动了192.168.aa.bb:1099 
1) 这一台slave,所以只有一个结果(线程数和循环次数都是1): 
2) salve控制台信息 

6 选择全部启动,同时将salve机子上bin目录下的Jmeter-server.bat打开 
设置线程数为2


1) master结果,全部启动,我配置了2台slave,所以有4次执行结果: 

就这样,根据上述的过程,已经实现了Jmeter的分布式测试。

其他说明 
1 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。 
2 参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。 
3 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。

时间: 2024-10-15 17:42:27

Jmeter 分布式测试的相关文章

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分布式测试的坑

有关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分布式测试的坑

有关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

jmeter分布式测试的坑(转)

本文转自:https://www.cnblogs.com/lsjdddddd/p/5806077.html 有关jmeter分布式测试的环境配置,大概就是那样,但是每次想要进行jmeter分布式测试的时候,总是会有各种奇怪的问题,下面整理了一些可能遇到的坑. 问题:如果你的服务器名字和报错的时候显示的服务器名不一致(refuse to host:10.10.34.21,而服务器名明明是172.16.129.43) 只要错误中出现:Error in rconfigure() method java

Jmeter 分布式测试配置方法

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

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

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

jmeter分布式集群测试

Jmeter分布式集群测试 我们在使用Jmeter进行性能测试的时候,如果并发数较大(比如项目需要支持1000个并发),单台电脑的配置(内存.CPU)可能无法支持,这种情况下我们可以使用Jmeter提供的分布式测试的功能.下面就介绍一下分布式原理.配置流程. 1.  分布式原理 Jmeter分布式测试时,选择一台机器作为控制机,其他机器作为执行机.执行时,控制机会把脚本发到执行机上,执行机开始执行,执行完毕后,会把结果回传到控制机. 2.  配置流程 2.1执行机配置 第一步:在执行机上安装Jm

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

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