• 0
  • 0
分享
  • 从0到1手把手教你Jmeter分布式压测——软件测试圈
  • 曼倩诙谐 2024-07-30 16:24:06 字数 2228 阅读 563 收藏 0

  一、jmeter为什么要做分布式压测

  jmeter本身的局限性

  一台压力机的 Jmeter 支持的线程数受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)是有限的

  由于 Jmeter 是 Java 应用,对 CPU 和内存的消耗较大,在需要模拟大量并发用户数时,单机很容易出现 JAVA 内存溢出的错误,导致测试脚本本身就有瓶颈

  JVM 堆内存的局限性

  Java 应用的 jvm 堆内存 heap 受压力机硬件限制,虽然我们可以调整堆内存大小

  cmd 启用 Jmeter GUI 时,也会有提示

  increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file

  翻译:增加 Java 堆内存来满足测试的要求

  但是单机无法支撑数以万计大并发,此时,需要多个压力机进行分布式压力测试,这样性能瓶颈就不会是我们的压力机了

  联想场景

  · 测试 1000 线程并发的场景,但单机只能支持 200 并发无法达到1000

  · 通过分布式(5 台机器起)可以模拟 1000 并发

  分布式压测

  Jmeter 支持分布式压测,将需要模拟的大量并发用户数分发到多台压力机,使 Jmeter 拥有更大的负载量,满足真实业务场景(高并发场景)。

  分布式的最终目的

  · 确保压力机不会出现性能瓶颈

  · 在后面进行性能分析时,不需要考虑压力机是否会导致性能瓶颈的主要原因之一

  二、分布式原理

1-1.jpg

  把上面的动图完整看完,就懂了,原理如下:

  1. Cnotroller 是控制机,Slaves 是多个压力机

  2. 分布式测试中,Cnotroller 通过命令行将测试脚本分发给所有 Slave

  3. Slave 不需要启动 Jmeter GUI,通过 CLI 模式执行测试

  4. Slave 执行完后,会把结果回传给 Master

  5. Master 收集所有 Slave 的结果并汇总成一个结果集

  注意

  压力机也可以叫:负载机、代理机、执行机、肉鸡....各种各样的名字,但他们都是 Slave。

  Master 也可以执行测试脚本,也可以不执行只负责管理。

  三、分布式压测的前提条件已经配置

  注意事项:

  1、保持Contorller和Slave机器的JDK、jmeter以及插件等配置版本一致;

  2、如果测试数据有用到CSV或者其他方式进行参数化,需要将data在每台Slave上复制一份,且读取路径必须保持一致;

  3、确保Contorller和Salve机器在同一个子网里面;

  4、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致Slave机报错);

  5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

  6、如果并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;

  1、修改Contorller配置

  打开Contorller机下jmeter安装文件下的bin目录:jmeter.properties文件,搜索remote_hosts=127.0.0.1,将Slave机的IP和端口写在后面,比如:

  remote_hosts=127.0.0.1:1099,172.16.6.90:1099,172.16.6.91:1099

  其中172.16.6.90和172.16.6.90为Slave机的IP,每个Agent机之间用英文半角逗号隔开,修改保存。注意默认端口都为1099

  切记不论从主机器都要修改:server.rmi.ssl.disable=true,并且去掉#,否则会报错误

  2、负载机

  首先安装好jdk和jmeter环境,具体见我的上一篇文章。然后打开配置文件 /bin/jmeter.properties 找到并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。

  # Password of Trust store
  #server.rmi.ssl.truststore.password=changeit
  #
  # Set this if you don't want to use SSL for RMI
  server.rmi.ssl.disable=true      # 改成true

  输入命令:jmeter-server -Djava.rmi.server.hostname=172.16.2.114 ,启动 anget 节点。jmeter-server 后面的参数指定 agent 的 IP。

1-2.jpg

  3、启动jemter

  启动jmeter后,设置线程组、配置元件、取样器、监听器等原件,点击“运行-远程启动”:

1-3.jpg

  可以选择远程启动一个Slave机,或者选择远程全部启动,即可进行分布式测试了。


作者:小码哥说测试    

来源:http://www.51testing.com/html/84/n-7796984.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 免费的开源框架和工具由于其开源特性,现在逐渐成为自动化测试的首选解决方案。 区别在于,你是喜欢使用类库编写一个全新的自动化测试框架,或者喜欢使用一个现成的工具。本文帮忙你快速了解 10 大免费和开源测试工具、框架。Katalon StudioKatalon-StudioKatalon Studio 是一款流行的免费测试自动化工具,适用于 Web、移动、API和桌面(Windows)。Katalon Studio 提供低代码和脚本方法,消除了构建和维护单独测试框架的培训成本。借助强大的内置功能,用户可以直接专注于测试活动,而在创建、运行和维护测试上花费更少的精力。支持的编程语言:Java 和 G...
            0 0 1066
            分享
          •   安全测试工具Appscan也是软件测试实验室软件测试体系建设或申请软件测试CNAS资质时,很常见的一款工具。本文我们带大家一起来了解一下安全测试工具Appscan,它的四大套件以及最新版本的功能。  AppScan隶属于HCL品牌旗下 ,通过利用人工智能和机器学习来实施安全最佳实践和合规性,帮助软件开发人员检测和修复漏洞。它的静态、动态、交互式和开源扫描引擎,可以部署在开发生命周期的每个阶段,测试web应用程序、API和移动应用程序。经过扫描引擎驱动,通过风险管理仪表板,提供跨静态、动态、交互式和开源测试的可扩展应用程序安全测试,实现对风险和合规性的可见性。  AppScan 套件包括: ...
            0 0 1766
            分享
          • 管理的定义在我理解,管理,是管理者带领一群人一起完成一个共同目标的过程。在这个过程中,如何将团体目标最好的完成,如何将团体与个人的利益进行有效的协调,如何将团体中的每个人的价值最大化,都是作为管理者需要去思考的。管理的内容带领,就是要在团队中发挥带领者的角色。一个好的管理者,会和团队一起冲锋陷阵,在完成目标的路上身先士卒,以身作则,不畏惧不退缩。有困难,他会和团队一起并肩面对;有问题,他会首先反思其中的原因;有疑问,他会和团队分享自己的不解;有想法,他会开诚布公畅所欲言。带领团队的过程中,有被质疑时独当一面,不会将责任甩给团队;和其他团队合作遇到阻碍时,敢于站在团队前面,而不是如缩头乌龟一般让...
            1 2 2344
            分享
          •   摘要:随着互联网应用的快速发展,用户的体验要求也在不断提高,软件的性能测试显得尤为重要。  当项目组想要优化一个性能不合格的软件时,通常会采取性能调优的方法。性能调优是通过调节计算机硬件、操作系统、应用程序三方面之间的关系,实现整个系统的性能最大化,以满足业务需求。Oracle数据库作为应用较为广泛的数据库种类之一,开发测试人员需要掌握Oracle数据库调优的常见场景与方法。  在Oracle性能调优任务中,测试人员能够通过nmon和Oracle自带的性能分析工具AWR等观测数据库的任务执行情况和资源使用情况。其中,AWR报告中的SQL Statistics项会从几个维度列举系统...
            0 0 1552
            分享
          • 读者提问:回归测试怎么做 ?阿常回答:这个问题我分两点回答1、什么是回归测试2、怎么做回归测试一、什么是回归测试有些同学对于冒烟测试和回归测试拎不清,冒烟测试与回归测试是有区别的,下面阿常分别和大家说说两者的区别。冒烟测试,是新编译的版本在进行正式测试之前,进行预测试来确保软件的基本功能是正常的。回归测试,是正式测试过程中,对已修复的问题或软件环境发生改变后进行的测试,一般是验证已修复的问题及测试问题相关联模块。二、怎么做回归测试回归测试策略如下:1、全面回归测试--每一个大版本的发布,或者一次较大规模的调整,都需要在预发布环境做一次全面的回归测试。2、选择性回归测试--小版本的迭代...
            0 0 1389
            分享
      • 51testing软件测试圈微信