如何模拟超过 5 万的并发用户

EndNote20保姆级安装教程:从下载到汉化一步到位(附闪退解决方案) 本文提供EndNote20的详细安装与汉化教程,涵盖系统准备、分步安装、路径优化及闪退解决方案。针对科研人员的需求,特别优化了中文环境下的使用体验,确保文献管理工具的高效稳定运行。 阅读详情

来源:www.oschina.net/translate/how-run-load-test-50k-concurrent-users

本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情.

你可以在本文的结尾部分看到讨论的记录.


步骤一1 : 编写你的脚本

开始之前,请确定从JMeter的Apache社区jmeter.apache.org 获得了最新的版本.

你也会要下载这些附加的插件 ,因为它们可以让你的工作更轻松.

有许多方法可以获得脚本:

1、使用 BlazeMeter 的 Chrome 扩展 来记录你的方案

2、使用 JMeter HTTP(S) 测试脚本记录器 来设置一个代理,那样你就可以运行你的测试并记录下所有的东西

3、从头开始全部手工构建(可能是功能/QA测试)

如果你的脚本是一份记录的结果(像步骤1&2), 请牢记:

1、你需要改变诸如Username & Password这样的特定参数,或者你也许会想要设置一个CSV文件,有了里面的值每个用户就可以是不同的.

2、为了完成诸如“添加到购物车”,“登录”还有其它这样的请求,你也许要使用正则表达式,JSON路径提取器,XPath提取器,来提取诸如Token字符串,表单构建ID还有其它要素

3、保持你的脚本参数化,并使用配置元素,诸如默认HTTP请求,来使得在环境之间切换时你的工作更轻松.

步骤2 : 使用JMeter进行本地测试

在1个线程的1个迭代中使用查看结果树要素,调试样本,虚拟样本还有打开的日志查看器(一些JMeter的错误会在里面报告),来调试你的脚本.

遍历所有的场景(包括True 或者 False的回应) 来确保脚本行为确如预期...

在成功使用一个线程测试之后——将其提高到10分钟10到20个线程继续测试:

1、如果你想要每个用户独立——是那样的么?

2、有没有收到错误?

3、如果你在做一个注册过程,那就看看你的后台 - 账户是不是照你的模板创建好了? 它们是不是独立的呢?

4、从总结报告中,你可以看到对测试的统计 - 它们有点用么? (平均响应时间, 错误, 每秒命中率)

一旦你准备好了脚本:

1、通过移除任何调试和虚拟样本来清理脚本,并删除你的脚本侦听器

2、如果你使用了侦听器(诸如 "将响应保存到一个文件"),请确保你没有使用任何路径! , 而如果他是一个侦听器或者一个CSV数据集配置——请确保你没有使用你在本地使用的路径 - 而只要文件名(就好像跟你的脚本在同一个文件夹)

3、如果你使用了自己专有的JAR文件,请确保它也被上传了.

4、如果你使用了超过一个线程组(不是默认的那个) - 请确保在将其上传到BlazeMeter之前设置了这个值.


步骤3 : BlazeMeter沙箱测试

如果那时你的第一个测试——你应该温习一下 这篇 有关如何在BlazeMeter中创建测试的文章.

将沙箱的测试配置设置成,用户300,1个控制台, 时间50分钟.

对沙箱进行这样的配置让你可以在后台测试你的脚本,并确保上的BlazeMeter的一切都运行完好.

为此,先按下灰色的按钮: 告诉JMeter引擎我想要完全控制! - 来获得对你的测试参数的完全控制

通常你将会遇到的问题:

1、防火墙 - 确保你的环境对BlazeMeter的CIDR 列表 (它们会实时更新)开发,并把它们放入白名单中

2、确保你所有的测试文件, 比如: CSVs, JAR, JSON, User.properties 等等.. 都可以使用

3、确保你没有使用任何路径

如果仍然有问题,那就看看错误日志吧(你应该可以把整个日志都下载下来).

一个沙箱的配置可以是这样的:

  • 引擎: 是能使控制台(1 个控制台 , 0 个引擎)

  • 线程: 50-300

  • 产能提升: 20 分钟

  • 迭代: 一直测试下去

  • 时间: 30-50 分钟

这可以让你在产能提升期间获得足够多的数据(以防你遇到问题) ,而你将可以对结果进行分析,以确保脚本的执行确如预期.

你应该观察下Waterfall / WebDriver 选项卡来看看请求是否正常,你不应该在这一点上出任何问题(除非你是故意的).

你应该盯着监控选项卡,观察期内存和CPU消耗 - 这对你在步骤4中尝试设置每一个引擎的用户数量.

步骤4 : 使用1个控制台和1个引擎来设置每个引擎用户的数量

现在我们可以肯定脚本能在BlazeMeter中完美运行了——我们需要计算出要多少用户放到一个引擎中.

如果你能用户沙箱中的数据来做这个决定,那就太棒了!

在这里,我会给出一种不用回头去查看沙箱测试数据就能计算出这个数的方法.

设置你的测试配置:

  • 线程数: 500

  • 产能提升: 40 分钟

  • 迭代: 永久

  • 时长: 50 分钟

使用一个控制台和一个引擎.

运行测试并(通过监视选项卡)对你的测试引擎进行监视.

如果你的引擎对于75%的CPI使用率和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. 没有一个引擎超过CPU75%的占有率和内存85%占有率的上限;

2. 定位你的控制台标签(你可以通过一次点击Logs Tab->Network Information,查

看控制台私有IP地址来找到它的名字)——它不应该达到CPU75%占有率和内存85%占有率的上限。

如果你的控制台达到了该上限——减少引擎数量并重新运行直到控制台在该上限之下。

在这个步骤的最后,你会发现:

    1. 每个集群的用户数量;

    2. 每个集群的命中率。

查看Aggretate Table中的其他统计信息,并找到本地结果统计图来获得有关你集群吞吐量的更多信息。

步骤 6 : 使用 Master / Slave 特性来达成你的最大CC目标

我们到了最后一步了。

我们知道脚本正在运行,我们也知道一个引擎可以支持多少用户以及一个集群可以支持多少用户。

让我们做一下假设:

  • 一个引擎支持500用户

  • 一个集群可以用户12个引擎

  • 我们的目标是5万用户测试

因此为了完成这些,我们需要8.3 个集群..

我们可以用8个12台引擎的集群和一个4太引擎的集群 - 但是像下面这样分散负载应该会更好:

每个集群我们用10台引擎而不是12,那么每个集群可以支持 10*500 = 5K 用户并且我们需要10个集群来支持5万用户。

这样可以得到如下好处:

1、不用维护两个不同的测试类型

2、我们可以通过简单的复制现有集群来增加5K用户(5K比6K更常见)

3、只要需要我们可以一直增加

现在,我们已经准备好创建最终的5万用户级别的Master / Slave测试了:

1、将测试的名称从"My prod test" 改为"My prod test - slave 1"。

2、我们回到步骤5,将高级测试属性(Advanced Test Properties)下的Standalone修改为Slave。

3、按保存按钮——现在我们有了一个Master和9个Slave中的一个。

4、返回你的 "My prod test -slave 1".

5、按复制按钮

6、接下来重复步骤1-5直到你创建了9个slave。

7、回到你的 "My prod test -salve 9" 并按复制按钮.

8、将测试的名称改为 "My prod test -Master".

9、将高级测试属性(Advanced Test Properties) 下的Slave改为Master。

10、检查我们刚才创建的所有的Slave(My prod test -salve 1..9)并按保存。

你的5万用户级别的Master-Slave测试已经准备好了。通过按master上的开始按钮来运行10个测试,每个测试5千用户。

你可以修改任意一个测试(salve或master),让它们来自不同的区域,有不同的脚本/csv/以及其他文件,使用不同的网络模拟器,不同的参数等。

你可以在一个叫“Master load results”的master报告中的一个新tab页中找到生成的聚合结果的报告,你还可以通过打开单个的报告来独立的查看每一个测试结果。

(完)
推荐阅读:举世闻名的 SQL 注入是什么?这个漫画告诉你!Spring的Bean生命周期,11 张高清流程图及代码,深度解析程序员 6 个接私活的网站,你有技术就有钱!
如何在面试中介绍自己的项目经验?SpringBoot实现过滤器、拦截器与切片好文!必须点赞
零基础学习CANoe Panel(17)—— Panel CAPL Function CANoe内置了几个CAPLFunction,允许我们在CAPL运行时动态的更改Panel控件的属性,比如打开某个panel,禁用某个控件,更改控件颜色等。 阅读详情

相关推荐

content-pipeline:一条可落地的内容生产流水线

content-pipeline 是一种将内容创作工程化的系统性方法,其核心在于用确定性流程替代碎片化人工操作。它基于结构化提示(prompt)、预置叙事框架与品牌参数固化三大原理,实现从素材输入到多平台发布的端到端自动化。技术价值体现在显著降低认知负荷、保障输出一致性、支持本地化资源绑定与闭环反馈校验。典型应用场景包括技术教程批量生成、跨平台(公众号/小红书/即刻)内容适配、AI写作质量可控迭代等。本文深入解析其作为‘内容制造业’基础设施的底层设计逻辑与实操路径,尤其聚焦Claude Code环境下的真实

weixin_31199559的博客 270

java 本地模拟高并发

通过http请求和多线程实现。 1、复写测试线程类,run方法中通过http请求进行模拟。 public class ThreadDemo implements Runnable { @Override public void run() { for (int i =0;i<10;i++){ String url = "http://localhost:8080/aaa/test"; HttpUtils.doGet(url

weisian的博客 2038

ST-Link V2的隐藏技能:多通道串口调试的终极指南

本文深入探讨了ST-Link V2的多通道串口调试功能,突破传统烧录工具的限制。通过详细的硬件配置、Arduino IDE设置和实战案例,展示了如何利用SWD接口实现多通道数据监控,提升STM32F103C8T6等开发板的调试效率。文章还提供了PCB布局优化和性能调优技巧,助力开发者充分发挥ST-Link V2的潜能。

weixin_29285605的博客 357

并发模拟的四种方式

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 4.5 分钟。来自:网络一、PostmanPostman 是一个款 HTTP 请求模拟工具首先演示一下 Postman 最基本的使用,创建一个 Spring Boot 项目,测试的代码如下:importorg.springframework.web.bind.annotation.GetMapping...

良月柒 565

利用 Python 爬虫进行舆情监测的实战方法

舆情监测是指对互联网上的公众舆论进行监测和分析的过程。它可以帮助企业和组织了解公众对其品牌、产品或服务的看法,以及市场竞争情况。通过舆情监测,企业可以及时发现潜在的问题和机会,从而做出相应的决策。通过本实战案例,我们了解了如何利用 Python 爬虫进行舆情监测的整个流程。从数据采集到数据分析,再到可视化展示,每一步都提供了详细的代码示例和注释。希望这些方法和技巧能够帮助你在实际工作中更好地进行舆情监测,从而为企业的决策提供有力的支持。wordcloud。

u014481728的博客 1056

前沿探索:基于强化学习的目标检测与跟踪技术及论文解析

前沿探索:基于强化学习的目标检测与跟踪技术及论文解析 ,人工智能,计算机视觉,大模型,AI,本文聚焦基于强化学习的目标检测与跟踪技术,先介绍相关技术基础,包括目标检测、跟踪及强化学习的算法等。接着阐述强化学习在目标检测与跟踪中的应用思路、框架及典型算法,解析三篇相关论文的背景、方法、实验结果。还探讨了该技术面临的样本效率、奖励函数设计等挑战,以及结合迁移学习等的未来发展方向,为该领域研究提供参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 11万+

如何利用JMeter模拟超过 5 万的并发用户

本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情. 你可以在本文的结尾部分看到讨论的记录. 快速的步骤概要 编写你的脚本 使用JMeter进行本地测试 BlazeMeter沙箱测试 使用一个控制台和一个引擎设置Users-per-Engine的数量 设置并测试你的集合(1个控制台和10-14 引擎) 使用...

weixin_34279579的博客 4673

pnpm 卸载教程:彻底移除 pnpm 及全局缓存的方法

卸载 pnpm = 全局包 → CLI → 环境变量 → store 缓存只要按这个顺序来,基本不会留下任何坑。如果你后面还打算重新安装 pnpm / 切换 npm、yarn / 多包管理器共存,这些细节反而更重要,环境一旦干净,后续问题会少很多。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 940

java实现5万并发_☆啃碎并发(五):Java线程安全特性与问题

0 前言在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个 共享、可变资源 的情况,这种资源可以是:一个变量、一个对象、一个文件等。特别注意两点:共享: 意味着该资源可以由多个线程同时访问;可变: 意味着该资源可以在其生命周期内被修改;简单的说,如果你的代码在单线程下执行和在多线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。那么,当进行多线程编程时,我们又会...

weixin_39596739的博客 283

产品路线图的三种模型(RICE/MoSCoW/Kano),教你如何对需求进行优先级排序

RICE/MoSCoW/Kano三种模型,教你如何对需求进行优先级排序。 也许你会让业务提供一份ROI,记得前不久参加过一场立项会评审,一位很有意思的小产品在会上讲不清楚ROI,评审们要求会后重新梳理,小产品表达不要为难业务方干一些他们不擅长的事了。这个看似笑话的经历,背后隐藏着价值判断已经流于形式。 也许你会要求业务方直接给出需求优先级列表,把任务分为P0到P5,这样的划分除了按需求本质的优先级还同时考虑了开发资源、开发难度等问题。毫不夸张地说,我曾经拿到一张全是P0级别的需求清单,如果一切任务都是高

wenyusuran的专栏 5545

嵌入式面经(2)——央企篇

前文得知我只投央企,不投国企,有面试的央企大致有三类:感兴趣的同学可以和我私聊军工央企相关(航空航天,兵器兵工)制造央企相关(三桶油,装备制造)金融运维相关(信通集团,国有银行)接下来我将对我有的面试中询问的面经进行总结。

coldmood77的博客 473

敢不敢模拟超过 5 万的并发用户?

程序员的成长之路互联网/程序员/成长/职场关注阅读本文大概需要 6 分钟。来自:http://t.cn/ES7KBkW本文将从负载测试的角度,描述了做一次流畅的 5 万...

良月柒 1160

华为服务器BMC方式安装系统-官方文档解读

华为服务器BMC方式安装系统 安装完成之后我们有两种方式去安装系统, > 一、服务器连接显示屏、键盘、鼠标和启动盘去启动服务器安装系统(弊端:需要制作单独启动盘并且需要硬件资源) > 二、使用BMC方式安装系统,也就是说使用网线连接我们的笔记本和服务器的BMC口或者mgt口去进行安装。

王明的博客 4580

模拟超过 5 万的并发用户,让我来!

作者:blazemeteroschina.net/translate/how-run-load-test-50k-concurrent-users步骤1 : 编写你的脚本步骤2 : 使用...

Java笔记虾 665

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

模拟一次超过 5 万的并发用户

步骤1 : 编写你的脚本 步骤2 : 使用JMeter进行本地测试 步骤3 : BlazeMeter沙箱测试 步骤4 : 使用1个控制台和1个引擎来设置每个引擎用户的数量 步骤5:安装并测试集群 步骤 6 : 使用 Master / Slave 特性来达成你的最大CC目标 本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情. 你可以在本文的结尾部分看到讨论的记录. 快速的步骤概要 编写你的脚本 使用JMeter..

风水道人 310

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何模拟一次超过 5 万的并发用户?

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 7 分钟。英文原文:How to run a load test of 50k+ concurrent users参...

良月柒 609

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何模拟超过 5 万用户的并发访问?

来源:http://t.cn/ES7KBkW 本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情. 你可以在本文的结尾部分看到讨论的记录. 快速的步骤概要 编写你的脚本 使用JMeter进行本地测试 BlazeMeter沙箱测试 使用一个控制台和一个引擎设置Users-per-Engine的数量 设置并测试你的集合 (1个...

勇往直前的专栏 1118

并发测试神器,模拟一次超过 5 万的并发用户

点击上方好好学java,选择星标公众号重磅资讯、干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架个人原创100W+访问量博客:点击前往,查看更多 作者:blaz...

好好学java 665
上一篇: 如何实现微信和淘宝的扫码登录 ?
下一篇: 贼好用的Java工具类库,GitHub星标10k+,你在用吗?
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值