当前位置: 首页 > 知识库问答 >
问题:

如何使jmeter在小时间间隔内启动多个请求

诸福
2023-03-14

我想用500K API调用对我的API进行负载测试。

我做了一个JMeter测试,从.csv文件中读取一个访问令牌,并使用该令牌进行API调用。

当然,从一台计算机上我不能执行那么多的请求,所以我实现了分布式JMeter服务器,所以我在AWS上有一个主服务器和500个从服务器(T3.medium)。

在测试中,我将循环设置为:1000(不是很大的数字)上升:5秒。我要测试持续5秒。因此在一个5秒的帧中,总共要加载500K API调用。测试何时开始并不重要,但我需要在这5秒间隔内发出来自所有从服务器的所有请求。

而这里的问题是测试总是需要更长的时间。例如,发出所有请求大约需要3分钟,而服务器的平均响应约为50ms。

我如何配置JMeter或者我应该使用什么来保证所有500K API调用都是在5sec间隔内进行的?

这是主机输出的示例:

Starting remote engines
Starting the test @ Thu Nov 08 18:28:02 UTC 2018 (1541701682517)
summary +      1 in 00:00:00 =    4.8/s Avg:   106 Min:   106 Max:   106 Err:     0 (0.00%) Active: 76 Started: 24 Finished: 0
summary + 286890 in 00:00:27 = 10817.9/s Avg:    66 Min:    44 Max:  1363 Err:     0 (0.00%) Active: 2837 Started: 22851 Finished: 25632
summary = 286891 in 00:00:27 = 10732.9/s Avg:    66 Min:    44 Max:  1363 Err:     0 (0.00%)
summary +  40389 in 00:00:30 = 1344.8/s Avg:    67 Min:    45 Max:  1630 Err:     0 (0.00%) Active: 6607 Started: 27937 Finished: 24366
summary = 327280 in 00:00:57 = 5765.6/s Avg:    66 Min:    44 Max:  1630 Err:     0 (0.00%)
summary +  47986 in 00:00:30 = 1600.6/s Avg:    70 Min:    45 Max:  1618 Err:     0 (0.00%) Active: 2847 Started: 70360 Finished: 70549
summary = 375266 in 00:01:27 = 4326.1/s Avg:    67 Min:    44 Max:  1630 Err:     0 (0.00%)
summary +   8420 in 00:00:31 =  274.6/s Avg:    62 Min:    45 Max:   335 Err:     0 (0.00%) Active: 1231 Started: 77129 Finished: 78934
summary = 383686 in 00:01:57 = 3267.9/s Avg:    66 Min:    44 Max:  1630 Err:     0 (0.00%)
summary +   9173 in 00:00:30 =  305.1/s Avg:    59 Min:    45 Max:  1107 Err:     0 (0.00%) Active: 166 Started: 80976 Finished: 83846
summary = 392859 in 00:02:27 = 2663.8/s Avg:    66 Min:    44 Max:  1630 Err:     0 (0.00%)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 107131 in 00:01:11 = 1504.3/s Avg:    72 Min:    45 Max:  1230 Err:     0 (0.00%) Active: -484 Started: 86185 Finished: 88700
summary = 499990 in 00:03:39 = 2286.2/s Avg:    68 Min:    44 Max:  1630 Err:     0 (0.00%)
Tidying up remote @ Thu Nov 08 18:31:41 UTC 2018 (1541701901996)

共有1个答案

闻人志
2023-03-14

有一个合适的选项:吞吐量整形计时器和并发线程组组合。它们可以通过调度反馈功能组合在一起,因此如果当前的量不足以执行所需的负载,JMeter将启动额外的线程。

一般性建议:

让我们稍微缩小一下规模,您需要确保1台服务器可以在5秒或200个请求/秒内发送1000个请求。它意味着您的服务器响应时间应该是5毫秒(包括建立连接和请求来回传输的时间)。据我所知,您的设置最小响应时间为45毫秒,最大响应时间高达1.6秒。因此,使用当前的设置似乎无法实现所需的吞吐量。

现在你需要识别原因,这里有一些提示:

  1. 您有5秒的上升时间,这意味着最后200个用户将在测试的第5秒启动,无论如何,这将花费超过5秒的时间
  2. 亚马逊T3 medium是2核机器,内存为4 GB。理论上,它应该足以启动1000个用户,但这取决于请求/响应的大小。使用Amazon CloudWatch或JMeter PerfMon插件
  3. 确保JMeter引擎不过载
  4. 尝试用更长的上升时间运行测试,这可能会给应用程序提供“预热”的可能性,并且您将能够定义饱和点-应用程序在不显示性能下降的情况下所能支持的最大用户数
 类似资料:
  • 本文向大家介绍手动写动画最小时间间隔是多少,为什么?相关面试题,主要包含被问及手动写动画最小时间间隔是多少,为什么?时的应答技巧和注意事项,需要的朋友参考一下 极简的动效,而非动画,animate.css 也能满足一定场景下的使用。 做动画嘛,大多会结合 css 的 transition 来做的,比如 clip.js 那种,或者 velocity.js / jquery.transit.js 这种

  • 问题内容: 我有一个数据集: 我想基本上在一个小时内“拆分”这些时间间隔,例如: 到目前为止,这是我的代码(该想法的积分发给@DumitrescuBogdan,将通话数据分为15分钟间隔): 后半部分(在“全部合并”之后)不产生任何结果,前半部分产生以下结果: 谢谢,我是初学者。我了解第一部分;坦白地说,我不明白下半场 我愿意接受其他解决方案。 我正在使用MS-Access 2010 问题答案:

  • 问题内容: 我想知道安排代码的最佳方法。我有一个代码,可以生成报告,并每隔24小时将邮件发送给一组人。它是一个基于控制台的Java应用程序。我想知道最好的安排时间的方法。有时我可能需要将其更改为12小时间隔。但是,应用程序在两次间隔之间不会执行任何其他任务。 问题答案: 这里有几种方法,从最简单到最全面: : 这种方法很简单,可以做24小时的工作和睡眠。实际上,这有点复杂,因为报告生成需要一些时间

  • # interval(date) Alias for interval.floor(date). For example, d3.time.day(new Date()) returns midnight (12:00 AM) on the current day, in local time. # interval.floor(date) Rounds down the specified da

  • 问题内容: 我有两次,开始时间和停止时间,格式为10:33:26(HH:MM:SS)。我需要两次之间的区别。我一直在浏览Python文档并在线搜索,我想这可能与datetime和/或time模块有关。我无法使其正常工作,并且仅在涉及约会时才继续寻找方法。 最终,我需要计算多个持续时间的平均值。我得到了工作上的时差,并将它们存储在列表中。我现在需要计算平均值。我正在使用正则表达式解析原始时间,然后进