JMeter分布式负载测试(吞吐量控制器)
在本节中,我们将学习如何使用吞吐量控制器在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分布式负载测试(吞吐量控制器)的更多相关文章
- AWS EC2+Docker+JMeter构建分布式负载测试基础架构
目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...
- 转:利用ant与jmeter实现负载测试自动化
性能测试一直以来都是测试领域一个令人争议的话题.测试的参考标准.评判依据及测试的方法选择都很难有一个统一的说法.但无论如何,对于需要能够承受一定压力而运行的程序来说,进行其进行功能和性能测试是一个必不 ...
- Locust分布式负载测试工具入门
忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...
- 性能测试工具 jmeter 分布式压力测试实操
性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
- Jmeter 分布式压力测试
JMeter中进行分布式测试 作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, ...
- linux上实现jmeter分布式压力测试(转)
摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...
- 使用JMeter进行负载测试快速入门
相信JMeter是很多测试人员必备技能之一,今天简单讲一下开发人员如何使用JMeter进行简单的压力测试快速入门. 安装JMeter Jmter官方地址 按提示下载JMeter,然后直接解压就可以用了 ...
随机推荐
- hdu2516 博弈
找规律,发现时斐波那契数列:打表上. #include<stdio.h> #include<string.h> #define maxn 2147483647 __int64 ...
- odoo 内置协议说明列表
odoo 内置协议说明列表 在以下目录. /odoo/odoo/addons/base/models/ir_module.py license = fields.Selection([ ('GPL-2 ...
- [自考]C++中一些特殊用法 2016-10-16 22:12 318人阅读 评论(30) 收藏
做了一段时间的C++的试题了,总结一些这段时间经常犯错和需要注意的地方. 一.常用的保留字和符号 const 定义常量或者参数 void 定义空类型变量或空类型指针,或指定函数没有返回值 static ...
- HDU 1081 To The Max【dp,思维】
HDU 1081 题意:给定二维矩阵,求数组的子矩阵的元素和最大是多少. 题解:这个相当于求最大连续子序列和的加强版,把一维变成了二维. 先看看一维怎么办的: int getsum() { ; int ...
- cume_dist(),允许并列名次、复制名次自动空缺,取并列后较大名次,结果如22355778……
将score按ID分组排名:cume_dist() over(partition by id order by score desc)*sum(1) over(partition by id) 将sc ...
- 详解Python中内置的NotImplemented类型的用法
它是什么? ? 1 2 >>> type(NotImplemented) <type 'NotImplementedType'> NotImplemented 是Pyth ...
- LA 4676 Geometry Problem (几何)
ACM-ICPC Live Archive 又是搞了一个晚上啊!!! 总算是得到一个教训,误差总是会有的,不过需要用方法排除误差.想这题才几分钟,敲这题才半个钟,debug就用了一个晚上了!TAT 有 ...
- oracle 共享SQL语句
为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer poo ...
- MySQL锁的用法之行级锁
行级锁是MySQL中粒度最小的一种锁,他能大大减少数据库操作的冲突.但是粒度越小,实现的成本也越高.MYISAM引擎只支持表级锁,而INNODB引擎能够支持行级锁,下面的内容也是针对INNOD ...
- STS Eclipse IDEA 指定启动JDK版本
使用场景: 开发人员在自己的机器上可能装了多个版本的JDK,但是在环境变量中只能配置一个 JAVA_HOME ,so你的IDEA Eclipse 可能因为你在 JAVA_HOME 配置JDK1.8 以 ...