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,然后直接解压就可以用了 ...
随机推荐
- MySQL命令行分号无法结束问题解决
背景:输入一串查询语句,以分号结束,发现没有结束,再打回车,分号,还是不完.什么exit,quit,bye,都不顶用如果要ctrl+C吧,又得退出mysql,一切重来,很麻烦.后来终于发现,引起这种现 ...
- iOS 通知观察者的被调函数不一定运行在主线程
Tony in iOS | 08/08/2013 iOS 通知观察者的被调函数不一定运行在主线程 今天修复Bug时候发现的一个小细节,记录下. 问题描述 事情是这样的:我在A视图(UITableVie ...
- Libevent:1前言
一:libevent概述: libevent是一个用来编写快速.可移植.非阻塞IO程序的库,它的设计目标是:可移植性.高效.可扩展性.便捷. libevent包含下列组件: evutil:对不同平台下 ...
- 【C++】为什么构造函数没有返回值?(转载)
为什么构造函数没有返回值? 意见(1) 我认为构造函数隐含的返回值就是this,因为构造函数是在类的对象产生时自动调用.构造函数被调用也就意味着产生了一个对象,而this指针是与对象实体相关联的, ...
- 如何将英文PDF文献翻译成中文
方法一:利用Google的本地文档翻译功能 这种方法比较简单,打开Google翻译首页http://translate.google.cn/, 选择"上传文档" 选择文件,开始翻译 ...
- Python基础:17类和实例之一(类属性和实例属性)
1:类通常在一个模块的顶层进行定义.对于Python来说,声明与定义类是同时进行的. 2:类属性仅与其类相绑定,类数据属性仅当需要有更加“静态”数据类型时才变得有用,这种属性是静态变量.它们表示这些数 ...
- Codesign error: Certificate identity appearing twice
第一种解决方法: I think I figured out why the simple delete is not working. Because the dev certificate is ...
- js+canvas实现象棋的布局、走棋位置提示、走棋代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- docker oracle install
https://hub.docker.com/r/9fevrier/oracle-11g Informations Oracle directory : /opt/oracle Data direct ...
- @loj - 3022@ 「CQOI2017」老 C 的方块
目录 @description@ @solution@ @accepted code@ @details@ @description@ 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上 ...