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 客户端线程数不应超过 100 。

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

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

(1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。

(2) 运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.9.99 和192.168.9.130 作为agent)

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

查找:
remote_hosts=127.0.0.1
修改为:
remote_hosts=192.168.9.99:1099,192.168.9.130:1099 

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

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

遇到的常见问题

1、在Controller端上控制某台机器Run,提示"Bad call to remote host"。

解决方法:检查被控制机器上的jmeter-server有没有启动,或者JMeter.properties中remote_hosts的配置错误。
2、Agent机器启动Jmeter_server.bat时,后台提示:"could not find ApacheJmeter_core.jar"

解决方法:确定在Agent机器安装jdk,并设置环境变量
3、远程启动时,报错:

ERROR - jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
java.NET.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67)
at org.apache.jmeter.gui.action.RemoteStart.doRemoteInit(RemoteStart.java:180)
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)

这个问题终于被我解决了,其实原因好简单呀。只要将本机的jmter-server.bat执行即可。要是在jmeter.properties配置的地方写了127.0.0.1 的话 就要开本机的 jmeter-sever.bat. 不写的话 就不用开了

4、查看1099端口是否被占用

netstat -ano | findstr "1099"
tasklist | findstr "1099"

其它说明:

  1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。

  2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。

  3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。

转载于:https://www.cnblogs.com/perfectwang/p/7235189.html

【转】JMeter学习(十三)分布式部署相关推荐

  1. jmeter的分布式部署

    在使用Jmeter进行性能测试时,如果并发数比较大(比如5000+并发),单台电脑的配置(CPU和内存)可能无法支持(公司配的联想e450家庭用笔记本一般到1000就会卡死),这时可以使用Jmeter ...

  2. Hadoop1 Centos伪分布式部署

    前言:       毕业两年了,之前的工作一直没有接触过大数据的东西,对hadoop等比较陌生,所以最近开始学习了.对于我这样第一次学的人,过程还是充满了很多疑惑和不解的,不过我采取的策略是还是先让环 ...

  3. 白话tensorflow分布式部署和开发

    2019独角兽企业重金招聘Python工程师标准>>> 白话tensorflow分布式部署和开发 博客分类: 深度学习 关于tensorflow的分布式训练和部署, 官方有个英文的文 ...

  4. Memcache分布式部署方案

    前言 应该是很久之前,我开始研究Memcache,写了一系列的学习心得,比如<Discuz!的Memcache缓存实现>等.后面的好几十条回复也让这篇文章成为了此博客中颇受关注的一员. 同 ...

  5. JMETER 为什么需要分布式

    JMETER 为什么需要分布式 单台压测机通常会遇到客户端瓶颈,受制于客户机的性能.可能由于网络带宽,CPU,内存的限制不能给到服务器足够的压力,这个时候你就需要用到分布式方案来解决客户机的瓶颈,压测 ...

  6. Hadoop全分布式部署 - CentOS(结尾附视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  7. PaddlePaddle开发者福利:深度学习环境一键部署+基础入门指导书

    2019独角兽企业重金招聘Python工程师标准>>> 由河北科技大学许云峰老师团队打造和分享,线下深度学习实验环境镜像(PaddlePaddle Fluid 1.1.0版+Pyth ...

  8. Jmeter性能测试五--分布式集群压测

    一.分布式压测背景及原理介绍 1. 分布式压测背景介绍 在企业项目实战时,如果被压的服务器处理能力非常高,或者说被压服务是一个集群,那么这个时候,你使用一台压力机是压不到瓶颈的,反而自己的压力机先瓶颈 ...

  9. 分布式部署ID全局配置之雪花算法

    分布式部署ID全局配置之雪花算法 前言 为什么需要分布式全局唯一ID 以及分布式ID的业务需求? 在复杂分布式系统中,往往需要对大量对数据和消息进行标识 如在美团.支付.餐饮 中 系统的数据日渐增长, ...

  10. Redis的分布式部署

    该文章从存储的分布式部署常用思路出发,介绍了水平拆分.主从复制这两种核心思路,并介绍了redis的实现,分别是 水平拆分的实现:sharding,将key通过crc16哈希到16384个slot里.s ...

最新文章

  1. 御水.20180506
  2. mac的终端下面使用ssh user@localhost输入密码 不能正常登录
  3. XGBoost调参技巧(二)Titanic实战Top9%
  4. Apache Solr入门教程(初学者之旅)
  5. 直播系统搭建关键步骤与要点!
  6. js GB2312和unicode互转
  7. VMWARE错误-VirtualInfrastructure.Utils.ClientsXml的类型初始值设定项引发异常
  8. qu(判定操作序列)NOIP模拟 数据结构判断 模拟
  9. OO Unit 3 JML
  10. SAP Kyma GraphQL storage实现
  11. python爬虫 被重定向_爬虫篇 | 认识Python最最最常用语重要的库Requests
  12. python pyquery倒数第二个节点之前的节点_Python中PyQuery库的使用总结
  13. javascript 函数的变量与作用域
  14. Myeclipse错误:Errors occurred during the build. 解决方法
  15. php程序员中文,php中文网“php程序员工具箱” v0.1版本上线
  16. 使用python判断素数
  17. Linux iptables常用命令
  18. Guns二次开发目录
  19. 管理经济学 知识点总结(一)
  20. 学习 《电路》(尼尔森著,第十版)第一章笔记(电流)

热门文章

  1. 你不必害怕,岁月有的是时间让你遇见更好的人(沈善书)
  2. 从零开始学android开发-布局中 layout_gravity、gravity、orientation、layout_weight
  3. 分享一个文件上传工具类
  4. “云栖直播”升级为“公开课”
  5. Django中使用Pagination的分页范例源码
  6. 2-05 使用固态存储SSD或PCIe卡
  7. 兼容性记录-class属性
  8. grep/egrep和正则表达式汇总
  9. 从CentOS6.0i386到CentOS6.6x86-64,搬家中,磕磕跘跘,各种折腾……
  10. LAMP架构,纯文本作品