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

news2024/12/24 10:19:12

本文将介绍使用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 /其他文件,使用不同的网络仿真和/或不同的参数。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【环形链表(带环链表)超详细总结】

题目一 给你一个链表的头节点 head ,判断链表中是否有环。 使用快慢指针,如果慢指针等于快指针,就说明是带环链表链表的中间结点 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;…

什么是 webpack?

Webpack 介绍 什么是 webpack? :::tip 官方描述 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个…

Zookeeper基础操作

搭建Zookeeper服务器 windows下部署 下载地址: https://mirrors.cloud.tencent.com/apache/zookeeper/zookeeper-3.7.1/ 修改配置文件 打开conf目录,将 zoo_sample.cfg复制一份,命名为 zoo.cfg打开 zoo.cfg,修改 dataDir路径&#xff0c…

0802|IO进程线程day5 作业(打印时钟在终端上,若终端输入quit,结束时钟)

作业1:守护进程 守护进程的创建(5步): 创建孤儿进程:所有工作都在子进程中执行,从形式上脱离终端控制。 fork(), 退出父进程 创建新的会话组:使子进程完全独立出来,防止兄弟进程对其…

蓝桥杯上岸必背!!!(并查集补更)

蓝桥杯上岸必背!!!(并查集补更) 大家好 我是寸铁💪 冲刺蓝桥杯省一模板大全来啦 🔥 蓝桥杯4月8号就要开始了 🙏 距离蓝桥杯省赛倒数第3天 ❗️ ❗️ ❗️ 还没背熟模板的伙伴们背起来 💪 &…

git 常用命令有哪些

Git 是我们开发工作中使用频率极高的工具,下面总结下他的基本指令有哪些,顺便温习一下。 前言 一般项目中长存2个分支: 主分支(master) 和开发分支(develp) 项目存在三种短期分支 &#xff1a…

大数据技术之Clickhouse---入门篇---SQL操作、副本

星光下的赶路人star的个人主页 积一勺以成江河,累微尘以崇峻极 文章目录 1、SQL操作1.1 Insert1.2 Update 和 Delete1.3 查询操作1.4 alter操作1.5 导出数据 2、副本2.1 副本写入流程2.2 配置步骤 1、SQL操作 基本上来说传统关系型数据库(以 MySQL 为例…

忘记数据库密码如何处理

windows 5.6.51版本及以前 #当前账号设置密码 set password password(123456); #当前账号取消密码 set password ; (1)用管理员身份打开控制台输入 net stop m5(我的电脑MySQL名字为m5,根据自己的更改) (…

爱尔眼科四川省区“同心博爱 光明工程”“西部健康公益行”炉霍站启动

8月1日,“同心博爱 光明工程”“西部健康公益行”炉霍站出征仪式在四川爱尔眼科医院隆重举行。 此次公益活动由民革成都市委会、中共锦江区委统战部指导,如意树爱心促进会主办,民革锦江区总支部、爱尔眼科四川省区支持,四川爱尔眼…

Linux系统CPU和磁盘性能进程分析工具pidstat

一、pidstat对CPU的分析 Linux 上的pidstat(1)工具按进程或线程打印CPU 用量,包括用户态和系统态时间的分解。默认情况下,仅循环输出活动进程的信息。例如: 这个例子捕捉到了系统备份,包含了tar(1)命令,从文件系统读取…

低通、高通、带通、阻通滤波器

目录 低通、高通、带通、阻通滤波器 低通、高通、带通、带阻滤波器的区别 通俗理解: 1、低通滤波器 2、高通滤波器 3、带通滤波器 4、带阻滤波器 5、全通滤波器 低通、高通、带通、阻通滤波器 低通、高通、带通、带阻滤波器的区别 低通滤波器:只…

运维高级--tomcat和jpress

1. 简述静态网页和动态网页的区别。 静态网页:事先创建好的网页,通常通过HTML、CSS和JavaScript等静态文件组成,不需要和服务器进行交互,加载速度快 动态网页:根据用户需求动态生成网页,动态网页通常使用…

3D软件性能的基准测试工具,侧重于测试处理器和显卡,赶紧试试

如果需要,Cinebench 可帮助您评估计算机执行渲染任务的性能。Cinebench 由 Maxon 开发,利用行业标准基准测试技术来评估您的系统在要求苛刻的图形任务中的性能。 它主要侧重于测试处理器和显卡,以确定其渲染复杂 3D 图像和动画的效率。Cineb…

Spring 容器原始 Bean 是如何创建的?

以下内容基于 Spring6.0.4。 这个话题其实非常庞大,我本来想从 getBean 方法讲起,但一想这样讲完估计很多小伙伴就懵了,所以我们还是一步一步来,今天我主要是想和小伙伴们讲讲 Spring 容器创建 Bean 最最核心的 createBeanInstan…

笔试编程题常用框架/方法

目录 考核方式 ACM模式 JavaScript(V8) JavaScript(Node) 数组 折半 / 二分查找 螺旋矩阵* 前缀和-区间求和 差分数组-区间增减 滑动窗口-子串 链表 双指针(快慢指针) 有序数组的平方 删除/覆盖数组元素 最小长度的子数组 三数之和abcta…

【RTT驱动框架分析05】-spi驱动框架分析

spi 1.应用层的spi操作 spi 消息结构 struct rt_spi_message {const void *send_buf;//发送数据的缓存void *recv_buf;//接收数据的缓存rt_size_t length;//数据长度struct rt_spi_message *next;//指向下一个消息结构unsigned cs_take : 1;//是否执行获取csunsigned cs_…

SQL-每日一题【1174. 即时食物配送 II】

题目 配送表: Delivery 如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。 「首次订单」是顾客最早创建的订单。我们保证一个顾客只会有一个「首次订单」。 写一条 SQL 查询语句获取即时订单在所有用户的首次订…

零碎小知识点汇总——记录工作中遇到的问题——基础积累

1.npm install安装包时,常用的-S -D有什么区别? 参考链接:https://blog.csdn.net/sunyctf/article/details/127667543 主要的区别就是依赖配置写入package.json文件的位置不同而已 npm install有一个别名:npm i -S:写入dependen…

抢夺本地生活万亿蛋糕:“抖音美团们”的攻防战

有人就有市场,有市场就有竞争。面对本地生活这一大“富矿”,互联网大厂们正在开启一场争夺战。 前有抖音、小红书在团购业务上火速推进,近日,随着拼多多正式上线本地生活入口,这个领域的玩家越来越多。 艾瑞咨询数据…

Linux中的特殊进程(孤儿进程、僵尸进程、守护进程)

一、孤儿进程 1)父进程退出,子进程不退出,此时子进程被1号(init)进程收养,变成孤儿进程。 2)孤儿进程会脱离终端控制,且运行在后端,不能用ctrlc杀死后端进程,…