jmeter分布式部署
Posted 翼风语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter分布式部署相关的知识,希望对你有一定的参考价值。
Jmeter进行负载测试的 时候,发现使用单台机器模拟测试超过比如500个进程的并发就有些力不从心或者说不能如实的反应实际情况,在执行的过程中,JMeter自身会自动关闭, 要解决这个问题,则可以使用分布式测试,运行多台机器运行所谓的 Agent 来分担 JMeter自身的压力(这个和LODARUNNER是一样的道理)
前提条件
JMeter分布式环境,一台Controller,一到多台Agent,Controller和Agent可以是同一台机器。
所有机器,包括Controller和Agent的机器:
1.运行相同版本的JMeter
2.使用相同的java版本
3.有基于SSL的RMI的有效密钥库,或者禁用SSL。(本文举例中是采用的禁用SSL)
4.都在一个网络
5.关闭防火墙
客户机和服务器配置
1、在所有期望运行 JMeter 并作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 Agent;
2、在Controller 机器的 JMeter 安装目录下找到 bin 目录,再找到 JMeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;
3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其 中的 127.0..0.1 表示运行 JMeter Agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的 1099 为 JMeter 的 Controller 和 Agent 之间进行通讯的默认 RMI 端口号; (个人备注:只改要作为Controller的机器上的此文件即可;Agent的机器上的文件可以不理会)
4、Agent机子要修改jmeter目录bin\\system.properties 文件:java.rmi.server.hostname=10.86.16.218 其中10.86.16.218代表Controller机子的IP地址
5、保存文件,然后依次启动作为 Controller的机器上的jmeter-server文件和作为Agent的机器上的jmeter-server文件(个人备注:如果是 WINDOWS系统版本的jmeter,则是启动jmeter-server.bat的批处理文件,LINUX系统则是jmeter-server文件, 没有后缀的,但是要修改为可执行权限,这后面具体有提到),并重新启动 Controller 机器上的 JMeter.bat,并进入 Run -> Remote Start 菜单项,在这里可以看到远程启动菜单下面有192.168.0.1 ,192.168.0.1两个IP地址
6、如果要让某个电脑执行,可以点击改电脑的IP地址就可以,如果两个都要执行,可以点击Run 菜单下的“远程运行全部”菜单
7、有时候用作代理的机器太少,仍不能满足需要,则需要将作为Controller的电脑也当作Agent,则同样需要修改 JMeter.properties文件,将Controller的IP地址写入。同时,这个时候,需要打先打开Controller 电脑中JMeter下bin目录下的jmeter-server.bat,然后再打开JMeter.bat,此时,进入Run -> Remote Start菜单,可以看到Controller也作为远程机器进行运行。 (针对第六点我个人经过实地测试后要进行细化确认:如果是在LINUX下,此文件的权限都还是要修改的,且jmeter-server会调用名为 jmeter脚本文件,其jmeter文件的权限也要修改为可执行的才可以,且每个被调用的Agent的机器的jmeter-server文件也是要执行 中才可用调用,这点很重要。)。
成功的标志
-
JMeter Controller的界面上,远程启动菜单可以看到配置的所有的Agent
3.Agent上jmeter-server.bat启动的控制台没有报错,显示测试的开始和结束
请求数分布
jmeter脚本配值500个并发,那么每台agent都会跑500个,所以配值并发数应该为=需求数/(agent台数),并且每台agent的请求都是并发到服务器的。
异常解决
系统找不到指定的文件
最近这几天在做Jmeter大数据分布式安装与部署的作业,刚开始一切顺利,双击jmeter.bat窗口顺利的弹了出来,可是,当我双击jmeter-server.bat时,却遇到了下图的错误:
我们可以看到jmeter.properties文件中有一行是这样的
s e r v e r . r m i . s s l . d i s a b l e = f a l s e
server.rmi.ssl.disable=false
server.rmi.ssl.disable=false
这行说明什么呢,就是让我们决定是不是要启动SSL。很明显,我的电脑上并没有这个,所以就不能启动。把这个改成
s e r v e r . r mi.ssl . d i s a b l e = t r u e
server.rmi.ssl.disable=true
server.rmi.ssl.disable=true
这样改好了,
察看结果树中的响应数据项为空白
解决jmeter进行分布式测试,远程机器来运行脚本,在察看结果树中的响应数据项为空白
解决步骤
-
打开Controller的jmeter--bin目录下的jmeter.properties文件
-
查找到mode=Standard 项
-
将其前边的注释去掉,然后保存重启jmeter,再次运行远程机器,就可以看到数据了
以上是关于jmeter分布式部署的主要内容,如果未能解决你的问题,请参考以下文章