面试总被问高并发负载测试,你真的会么?

本文将介绍使用50K并发用户测试轻松运行负载测试所需的步骤(以及最多200万用户的更大测试)。
❶ 写你的剧本

❷ 使用JMeter在本地测试

❸ BlazeMeter SandBox测试

❹ 使用一个控制台和一个引擎设置每引擎用户数量

❺ 设置和测试群集(一个控制台和10-14个引擎)

❻ 使用主/从功能达到最大CC目标

第1步:编写脚本

在开始之前,请确保从JMeter Apache社区获取最新的JMeter版本。

在开始之前,您需要下载JMeter插件管理器。下载JAR文件后,将其放入JMeter的lib / ext目录。然后,启动JMeter并转到“选项”菜单以访问插件管理器。

有很多方法可以获得你的脚本:

使用BlazeMeter Chrome扩展程序记录您的方案;

使用JMeter HTTP(S)测试脚本记录器, 您可以设置代理,运行测试并记录所有内容;

从头开始手动操作并构建所有内容(可能用于功能/ QA测试)。

如果您的脚本是录制的结果(如步骤1和2),请记住:

您需要更改某些参数,例如用户名和密码,或者您可能希望设置包含这些值的CSV文件,以便每个用户都可以是唯一的。

您可能需要使用正则表达式,JSON路径提取器,XPath Extractor提取诸如Token-String,Form-Build-Id等元素,以便以“AddToCart”,“Login”等方式完成请求。

保持脚本参数化并使用配置元素(例如HTTP请求默认值),以便在环境之间切换时更轻松。

第2步:本地测试

使用View Results Tree元素,Debug Sampler,Dummy Sampler和打开的Log Viewer(如果报告了一些JMeter错误),使用一个线程,一次迭代开始调试脚本。

遍历所有场景(真实和错误的响应)以确保脚本按预期运行。

使用一个线程成功运行脚本后,将其提升到10-20个线程10分钟并检查:

如果你打算让每个用户都是独一无二的 – 就是这样吗?你有任何错误吗?

如果您正在进行注册过程,请查看您的后端 – 是否根据您的模板创建了帐户?它们是独特的吗?

从摘要报告中,您可以看到有关测试的统计信息 – 它有意义吗?寻找平均响应时间,错误,命中率/秒。

一旦你的脚本准备好了,通过删除任何Debug / Dummy Samplers并删除脚本侦听器来清理它。

如果您使用监听器(例如“保存对文件的响应”),请确保您不使用任何路径!如果是监听器或CSV数据集配置,请确保不使用本地使用的路径。而是仅使用文件名,就好像它与脚本位于同一文件夹中一样。

如果您使用自己专有的JAR文件,请务必上传它。

如果您使用多个线程组(或不是默认线程组),请确保在将值上载到BlazeMeter之前设置这些值。

第3步:BlazeMeter SandBox测试

如果这是你的第一个测试,你应该检讨这个文章,了解如何在BlazeMeter创建测试。

SandBox它实际上是任何具有多达300个用户的测试,并且使用一个控制台最多只需50分钟。

SandBox的配置允许您测试脚本和后端,以确保BlazeMeter的一切正常。

要做到这一点,首先,按下灰色按钮:JMeter引擎我想要完全控制!完全控制您的测试参数。

您可能遇到的常见问题包括:

防火墙 – 确保您的环境对BlazeMeter CIDR列表(正在不更新)开放并将它们列入白名单

确保存在所有测试文件,例如CSV,JAR,JSON,User.properties等

确保您没有使用任何路径

如果仍然遇到问题,请查看日志中的错误(您应该可以下载整个日志)。

SandBox配置可以是:

引擎:仅限控制台(一个控制台,0个引擎)

主题:50-300

加速:20分钟

迭代:测试永远持续下去

持续时间:30-50分钟

这将允许您在加速期间获得足够的数据(如果您在那里遇到一些问题),您将能够分析结果以确保脚本按预期执行。

您应该查看Waterfall / WebDriver选项卡以查看请求是否正常。此时你不应该得到任何错误(除非你的意图)。

您应该观察监控选项卡以查看使用了多少内存和CPU – 这将帮助您完成步骤4,同时您将尝试设置每个引擎的用户数。

第4步:设置每个引擎的用户数量

既然我们确信剧本在BlazeMeter中完美运行,我们需要弄清楚我们可以将多少用户应用于一个引擎。

如果您可以使用SandBox数据来确定,那太好了!

在这里,我将为您提供一种方法来解决这个问题,而无需回顾SandBox测试数据。

将测试配置设置为:

线程数:500

加速40分钟

迭代:永远

持续时间:50分钟

接下来,使用一个控制台和一个引擎。

运行测试并通过Monitoring选项卡监控测试引擎。

如果您的引擎没有达到75%的CPU利用率或85%的内存使用率(可以忽略一次峰值):将线程数更改为700并再次运行测试。提高线程数,直到获得1000个线程或60%的CPU /内存使用量。

如果您的引擎超过了75%的CPU利用率或85%的内存使用率(可以忽略一次峰值):查看您第一次达到75%的时间点,然后查看您当时有多少用户。再次运行测试; 而不是500的增加,把你从上一次测试中获得的用户数量。

这一次,在实际测试中加入你想要的加速(5-15分钟是一个很好的开始)并将持续时间设置为50分钟。

确保在整个测试过程中不要超过75%的CPU或85%的内存使用率。

为了安全起见,您可以更安全地减少每个引擎10%的线程数。

第5步:设置并测试您的群集

我们现在知道一个引擎可以获得多少线程。在这一步结束时,我们将知道一个集群(测试)可以获得的用户数量。

群集是一个逻辑容器,只有一个控制台和0-14个引擎。即使您可以使用超过14个引擎创建测试,它实际上会创建两个集群(您可以看到将增加的控制台数量)并克隆您的测试。

每个控制台最多14个引擎基于BlazeMeter自己的测试,以确保控制台可以处理14个引擎的压力,这会产生大量数据需要处理。

因此,在此步骤中,我们将从步骤4开始测试并仅更改发动机的数量并将其提升至14。对最终测试(1,2,3等)小时的全长进行测试。测试运行时,请转到监控选项卡并验证:没有一个引擎通过75%的CPU或85%的内存限制。

找到您的控制台标签。如果您将转到“日志”选项卡 – >“网络信息”并查找控制台的专用IP,则可以找到其名称。它不应达到75%的CPU或85%的内存限制。

如果您的控制台达到了该限制,请减少引擎数并再次运行,直到控制台处于这些限制范围内。

在此步骤结束时,您知道:

您将拥有的每个群集的用户

您将达到的每个群集的点击次数

在负载结果图下的聚合表中查找其他统计信息,以获取有关群集吞吐量的更多信息。

第6步:使用主/从功能达到最大CC目标

我们已经到了最后阶段。

我们知道脚本正在运行,我们知道一个引擎可以维持多少用户,并且我们知道我们可以从一个群集获得多少用户。

我们假设我们有这些值:

一个引擎可以拥有500个用户

该集群将有12个引擎

我们的目标是进行50k测试

因此,要做到这一点,我们需要创建50,000 (500 * 12)= 8.3个集群。

我们可以使用8个集群的12个引擎(48K)和一个集群,其中有4个引擎(另外2个)。但是,最好像这样分散负载:

我们将使用10代替每个集群12个引擎,因此我们将从每个集群获得10 * 500 = 5K,并且需要10个集群才能达到50k。

这将有助于我们:

不保持两种不同的测试类型

过简单地复制现有的集群,我们可以增长5k(5k比6k更常见)

如果需要,我们可以随时添加更多。

我们现在准备用50k用户创建我们的最终主/从测试:将测试名称从“我的产品测试”更改为“我的产品测试 – 从属1”。

因此,我们回到第5步中的测试,在高级测试属性下,我们将其从Standalone更改为Slave。

按保存,我们现在有九个奴隶和一个主人中的第一个。

回到你的“我的产品测试-slave 1.”

按复制。

现在,重复步骤1-5,直到创建所有九个从属。

回到你的“我的prod test -salve 9”并按下Duplicate。

将测试名称更改为“My prod test -Master”。

转到“高级测试属性”并将其从“从”更改为“主”。

检查我们刚刚创建的所有从站(我的prod test -salve 1-9)并按save。

您对50k用户的主从测试已准备就绪。通过按下主站上的启动,您将启动10个测试(一个主站和九个从站),每个测试具有5k个用户。

您可以将每个测试(从站或主站)更改为来自不同的区域,具有不同的脚本/ csv /其他文件,使用不同的网络仿真和/或不同的参数。

您的主服务器和从服务器的汇总报告将在主报告中的新选项卡中找到,称为“主加载结果”,您仍然可以通过打开报告来查看每个单独的测试结果。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/229071.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 数据分析:日期型数据的玩转之道

更多资料获取 📚 个人网站:ipengtao.com 在数据分析的领域中,处理日期型数据是至关重要的一环。Python 提供了丰富的工具和库,使得对日期进行分析、处理、可视化变得更加轻松。本文将深入探讨 Python 中如何玩转日期型数据&#…

智能优化算法应用:基于猎食者算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于猎食者算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于猎食者算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.猎食者算法4.实验参数设定5.算法结果6.参考文献7.…

Unity中Batching优化的静态合批

文章目录 前言一、静态合批的规则1、模型使用同一个材质2、勾选静态合批3、对于静态合批后的Mesh顶点总数,不超过2^16^即可以使用同一批次,超过则会开启一个新的批次4、对与使用同一材质的不同模型间,纹理贴图的问题,我们可以通过…

腾讯云CODING全面支持云平台开发者生态

前言: 在技术革新迅速的当下,国内云厂商也意识到要打造拥抱开发者的云平台。如何以发展的眼光建设开发者产品与服务、或者说在软件工程领域如何演进?是值得思考的课题 正文: -----------------------云厂商向服务开发者转型---…

备份至关重要!如何解决iCloud的上次备份无法完成的问题

将iPhone和iPad备份到iCloud对于在设备发生故障或丢失时确保数据安全至关重要。但iOS用户有时会收到一条令人不安的消息,“上次备份无法完成。”下面我们来看看可能导致此问题的原因,如何解决此问题,并使你的iCloud备份再次顺利运行。 这些故…

【踩坑记录】from natten import NeighborhoodAttention1D

在配置forecast-mae环境的时候。 ./forecast-mae/src/model/layers/agent_embedding.py文件中 导入包的时候from natten import NeighborhoodAttention1D 报错, 解决办法,默认安装的是__version__ "0.14.2"版本的 出现这个问题可能是包损坏…

深入了解Java 8日期时间新玩法之Year、YearMonth、MonthDay、DayOfWeek

推荐语 在这篇文章中,我们将深入探讨Java 8中Year、YearMonth、MonthDay和DayOfWeek类的功能和使用方法。这些类是在Java 8中引入的新的日期时间API的一部分,它们为我们提供了更灵活、更易用的日期和时间处理能力。 尽管这些类在Java 8中已经出现&…

MuJoCo机器人动力学仿真平台安装与教程

MuJoCo是一个机器人动力学仿真平台,它包括一系列的物理引擎、可视化工具和机器人模拟器等工具,用于研究和模拟机器人的运动和动力学特性。以下是MuJoCo的安装教程: 下载和安装MuJoCo Pro。可以从MuJoCo的官方网站上下载最新版本的安装包。根…

VUE学习一、环境的安装

1.node.js安装 node.js是前端依赖的环境, 类似于java中的jdk 下载地址 node.js 下载 msi文件 下完就是一顿嘎嘎安装 , 安装后可以cmd看看node和npm的版本 1.2 yarn的安装 Yarn是Facebook最近发布的一款依赖包安装工具。Yarn是一个新的快速安全可信赖的可以替代NPM的依赖管…

POJ 3735 Training little cats 动态规划(矩阵的幂)

一、题目大意 我们有N只猫&#xff0c;每次循环进行K次操作&#xff08;N<100&#xff0c;K<100&#xff09;&#xff0c;每次操作可有以下三种选择&#xff1a; 1、g i 给第i只猫1个食物 2、e i 让第i只猫吃完它所有的食物 3、s i j 交换第i和j只猫的食物。 求出M次…

2024年江苏省职业院校技能大赛信息安全管理与评估 第二阶段学生组(样卷)

2024年江苏省职业院校技能大赛信息安全管理与评估 第二阶段学生组&#xff08;样卷&#xff09; 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第二阶段样题&#xff0c;内容包括&#xff1a;网络安全事件响应、数字取证调查、应用程序安全。 本次比赛时间为180分钟。 …

104. 二叉树的最大深度(Java)

目录 解法&#xff1a; 官方解答&#xff1a; 方法一&#xff1a;深度优先搜索 方法二&#xff1a;广度优先搜索 思路与算法 复杂度分析 时间复杂度&#xff1a; 空间复杂度&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根…

N卡、A卡能合体了,双卡“交火”游戏帧率暴涨200%

如果你混迹 PC 圈有些年头&#xff0c;一定听说过显卡「交火」这个直觉上很猛的操作。 双卡、三卡、四卡…有几张就「叠加」几倍的效果可比单张升级更让人兴奋。 然而&#xff0c;不管是 NVIDIA SLI 还是 AMD CrossFire 这几年都在了大众视野消失了。 原因很简单&#xff0c;…

611.有效的三角形个数

1.题目解析 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 补充&#xff1a; 1.三角形的判断&#xff1a;假设有三条边按大小排序&#xff1a; 2.题目示例 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用…

os.walk()遍历文件夹/文件

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

xcode ——Instrumets(网络连接调试)使用

环境&#xff1a; instruments 使用只能在真机调试时使用&#xff0c;且真机系统必须ios15 点击debug 按钮——Network——Profile in Instruments 然后就可以看到如下面板 展开运行的项目&#xff0c;点击session下的域名&#xff0c;下方回出现该域名下的网络请求。点击Deve…

使用 GROUP BY 进行数据库分析:以图书销售数据库为例

让我们通过一个简单但实用的例子来理解 GROUP BY 的使用。我们将以一个图书销售数据库为例。这个数据库包含两张表&#xff1a;一张是图书信息表 (books)&#xff0c;另一张是销售记录表 (sales)。我们会先创建这两张表&#xff0c;然后插入一些数据&#xff0c;并展示如何使用…

算法:常见的哈希表算法

文章目录 两数之和判断是否互为字符重排存在重复元素存在重复元素字母异位词分组 本文总结的是关于哈希表常见的算法 哈希表其实就是一个存储数据的容器&#xff0c;所以其实它本身的算法难度并不高&#xff0c;只是利用哈希表可以对于一些场景进行优化 两数之和 class Solut…

openEuler学习05-ssh升级到openssh-9.5p1

openEuler的版本是openEuler 20.03&#xff0c;ssh的版本是OpenSSH_8.2p1 [roottest ~]# more /etc/os-release NAME"openEuler" VERSION"20.03 (LTS-SP3)" ID"openEuler" VERSION_ID"20.03" PRETTY_NAME"openEuler 20.03 (LTS-…

单例模式---饿汉式、懒汉式

一、什么是单例模式 单例模式&#xff0c;指的是一个类中的对象只能有一个&#xff0c;它在内存中只会创建一次对象的设计模式。 二、饿汉式 public class SingleTon {// 私有的构造方法private SingleTon() {};// 1. 饿汉式private static SingleTon instance new SingleTon…