在本节中,我们将学习如何使用吞吐量控制器在JMeter中创建分布式负载测试计划。

出于测试目的,我们将在我们网站 www.yiibai.com 的URL下的某些网页上创建分布式负载。这些网页包括:

  • 主页: www.yiibai.com
  • 第1页(Java): www.yiibai.com/cplusplus/
  • 第2页(C语言): www.yiibai.com/cprogramming
  • 第3页(Python): www.yiibai.com/python

注意: 假设创建了10个虚拟用户(线程)来在网站上执行分布式负载测试,然后所有其他网页将由10个虚拟用户的持续负载进行测试。 但是,这不是一个现实世界的场景。 在现实世界中,同一URL下不同网页的负载可能存在差异。

让我们首先创建一个分布式负载测试计划,而不使用吞吐量控制器。 对于此测试,我们已将单个虚拟用户分发到每个线程组。

创建JMeter测试计划

  • 进入到JMeter/bin文件夹并双击jmeter.bat文件以启动JMeter界面。
  • 单击“测试计划”节点。
  • 将此测试计划节点重命名为Distributed Test
  • 选择Distributed Test节点,然后右键单击所选项目。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择Threads (Users) > Thread Group

添加采样器

接下来在Thread Group中添加一个HTTP RequestSampler。

  • 选择“Thread Group”,然后右键单击所选项。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择Sampler > HTTP request选项。
  • 它将添加一个空的HTTP请求采样器。

将HTTP Request Sampler的字段配置为:

  • Name - Home Page 。
  • 服务器名称或IP - 在这个示例中,Web服务器名称是 www.yiibai.com 。

现在,将复制线程组并将其粘贴到测试计划中三次。 根据测试的网页重命名每个HTTP请求采样器。每个HTTP请求采样器的服务器名称都相同。

下图显示了“分布式测试计划”下的目录结构。

分别配置Java,C_Programming和Cpp采样器的路径名。

以下图像显示了上述每个采样器的相应路径名。

主页

Java

C_Programming

CPP

添加监听器

  • 选择“Distributed Test Plan”元素。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择Listener -> Aggregate Report

保存并执行测试计划

  • 单击File -> Save Test Plan as
  • 将整个测试计划保存为Distributed_test1.jmx

  • 单击Run -> Start以执行测试计划。

验证输出

可以在#Samples标签中查看每个网页的加载分布。

现在,我们已经成功执行了分布式负载测试计划,但是不使用吞吐量控制器。 但是,在应用程序的实际负载测试期间,我们无法确定实际用户的数量。 在这种情况下,需要使用吞吐量控制器。

添加吞吐量控制器

首先,我们需要为测试计划创建一个主线程组(“Distributed Test”)。

  • 选择“Distributed Test”节点,然后右键单击所选项目。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择“Threads (Users)” -> “Thread Group”
  • 将此线程组重命名为Master Thread Group
  • 选择“Master Thread Group”节点,然后右键单击所选项。
  • 鼠标悬停在“添加”选项上,然后将显示元素列表。
  • 选择Logic Controller -> Throughput Controller

下图显示了吞吐量控制器的默认控制面板。

按照以下步骤在“Master Thread Group”节点下创建测试计划:

  • 复制“主页”采样器并将其粘贴到吞吐量控制器中。
  • 再创建三个吞吐量控制器并复制粘贴其余的网页采样器。
  • 禁用/删除分布式测试计划节点下的线程组。

下图显示了“Master Thread Group”节点下的目录结构。

现在,已将主线程组中的用户总数配置为“10”。 作为其结果,每个吞吐量控制器的“%”执行将根据主线程组中的用户总数进行分配。

我们为每个吞吐量控制器分配了“%”执行:

  • 10%为主页
  • 20%为Java
  • C_Programming为20%
  • Cpp为50%

注意:主线程组中的线程数(用户)可以根据应用程序的实际预期负载而变化。

下图显示了Master Thread Group和整个吞吐量控制器的配置。

单击Run -> Start,执行测试计划。

验证输出

可以在#Samples标签中查看每个网页的加载分布。

JMeter分布式负载测试(吞吐量控制器)的更多相关文章

  1. AWS EC2+Docker+JMeter构建分布式负载测试基础架构

    目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...

  2. 【转】使用JMeter进行负载测试——终极指南

    使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...

  3. 转:利用ant与jmeter实现负载测试自动化

    性能测试一直以来都是测试领域一个令人争议的话题.测试的参考标准.评判依据及测试的方法选择都很难有一个统一的说法.但无论如何,对于需要能够承受一定压力而运行的程序来说,进行其进行功能和性能测试是一个必不 ...

  4. Locust分布式负载测试工具入门

    忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...

  5. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  6. 使用JMeter进行负载测试——终极指南

    这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...

  7. Jmeter 分布式压力测试

      JMeter中进行分布式测试 作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, ...

  8. linux上实现jmeter分布式压力测试(转)

    摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...

  9. 使用JMeter进行负载测试快速入门

    相信JMeter是很多测试人员必备技能之一,今天简单讲一下开发人员如何使用JMeter进行简单的压力测试快速入门. 安装JMeter Jmter官方地址 按提示下载JMeter,然后直接解压就可以用了 ...

随机推荐

  1. hdu4318 最短路变形

    和hdu有一题差不多.给的是损失比,1-c%就是保存了多少,找出最大的保存率即可. #include<stdio.h> #include<iostream> #include& ...

  2. 《mysql必知必会》笔记3(插入、更新、删除、创建删除更新表、视图)

    十九:插入数据 1:insert语句用来将行插入数据表中,可以插入完整的行.行的一部分.插入多行.插入某些查询的结果. 2:不指定列名,可以这样插入: insert into customers va ...

  3. jQuery 手风琴效果

    //点击标题弹出对应的div 再次点击则隐藏 //jQuery只能获取行内的样式 没法获取头部的样式 $(".parentWrap .menuGroup span.groupTitle&qu ...

  4. vmware中配置CentOS

    一.下载 http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso 这里选择的是阿里云镜像 ...

  5. Java练习 SDUT-1689_斐波那契?

    斐波那契? Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 给出一个数列的递推公式,希望你能计算出该数列的第N个数.递推 ...

  6. Java练习 SDUT-3422_小金问呀问不会问题

    小金问呀问不会问题 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 众所周知,C语言的学习是我们程序设计基础的重点和主要 ...

  7. Redis源码解析:04字典的遍历dictScan

    dict.c中的dictScan函数,用来遍历字典,迭代其中的每个元素.该函数使用的算法非常精妙!!!所以必须记录一下. 遍历一个稳定的字典,当然不是什么难事,但Redis中的字典因为有rehash的 ...

  8. Python深入:setuptools简介

    Setuptools是Python Distutils的加强版,使开发者构建和发布Python包更加容易,特别是当包依赖于其他包时.用setuptools构建和发布的包与用Distutils发布的包是 ...

  9. android学习——Android Layout标签之-viewStub,requestFocus,merge,include

    定义Android Layout(XML)时,有四个比较特别的标签是非常重要的,其中有三个是与资源复用有关,分别是<viewStub/>, <requestFocus />, ...

  10. [\s\S]*?懒惰模式特殊情形

    通常理解[\s\S]*?X (X代表任意指定字符) 表示匹配任何字符的懒惰模式,一旦遇到后面出现的X便停止匹配,但实际不是如此,会尽可能的把后面的内容也匹配进去.如: 表达式 <tr[\s\S] ...