JMeter-保持当前威胁有效

问题描述

我想问一个有关如何执行负载测试方案的问题。我有多个威胁组,每个威胁组执行一个方案(获取,发布,发出请求),每个方案具有不同数量的威胁。每个方案要花X(未知)的时间来执行,这总是取决于它有多少个请求。我想要的是将它们全部运行在一起并在一定时间内保持负载(保持威胁处于活动状态)。

让我举个例子:

我想一起执行所有威胁组,并将负载保持30分钟。我遇到的问题是,威胁组1只需执行2分钟,威胁组2只需3分钟,威胁组3只需1分钟。我不能使用Infinite选项打勾,因为我只能使用特定数量的数据。对于第一个方案,我有75个用户(数据),如果他们一旦执行该方案就无法再次执行该方案,那么我需要另外75个(数据),而我没有。

有没有办法做到这一点?将每个威胁组中的威胁保持特定时间段是否可行?还是可以在特定时间内执行请求并覆盖整个持续时间的工具? (30分钟)

在每种情况下,在威胁组中设置参数如下图所示,它将关闭其威胁,因此我永远不会说30 v用户在特定时间内并行运行。

enter image description here

enter image description here

下图显示了方案1(粉红色)结束威胁的速度比方案2(参考)更快。此处的设置如下:

  1. 每种情况下的威胁5
  2. 加速10秒
  3. 持续时间90秒

enter image description here

解决方法

如果我理解正确,那么您将受到数据的限制,并且每个用户只有一个数据点用于一个循环。因此,我将尝试操纵加速并将其设置为1800,并为每个线程组循环= 1。取消选中“指定线程生存期”。 Jmeter将每1800/75秒为TG_1运行一个新线程。整个测试将运行1800秒+最后一个线程的循环时间。如果必须修改此负载配置文件是否适合您的应用程序。

,

据我了解,您的查询包含75个用户的数据,因此数据无法重复。您需要将负载保持30分钟。

简而言之,我可以说除非有更多数据,否则您将无法承受这么长时间的负载,或者您可以重复数据。

如果75个用户仅花费1分钟甚至5分钟,则意味着您还没有增加人工反应时间。要添加它,您可以简单地使用计时器。这将延迟采样器的执行。

,

如果您的第一个线程组在2分钟内执行了75个请求,而您希望在30分钟内执行,则实现此目标的唯一方法是使JMeter的速度降低15倍。 JMeter提供了各种Timers,它们中的每一个都允许在请求之间引入延迟,主要是为了模拟真实用户"think time"

2分钟内有75个请求,每分钟大约有37个请求,如果您需要使其慢15倍,则每分钟需要执行约2.4个请求。

因此,您可以将Constant Throughput Timer添加到您的第一个线程组并按以下方式进行配置:

enter image description here

这样,您将在30分钟内收到72个请求。

类似地,您可以减慢剩余的2个线程组

,

尝试使用Ultimate Thread group plugin

使用不同的最终线程组并根据需要更改线程,但其他参数保持如下所示。 因此,您的线程会有所不同,但其他条件可能会保持不变。像“初始延迟”,“启动时间”,“每秒保持负载”和“关闭”一样。

enter image description here

您可以使用plugin manager下载jpgc提供的所有插件的jpgc @ stardard集。然后,您将获得从Threads(Users)或从我们添加普通/标准线程组的同一位置添加jpgc最终线程组的选项。