从 JMeter 测试计划获取最大并发数并限制其值

Get max concurrency from a JMeter Test Plan and limit its value

我有一个分布式 JMeter 设置,我想围绕它创建一个 Java 服务包装器。

测试计划(JMX文件)由用户提供。因此,我不知道那里使用的属性和配置。用户测试计划可以有多个线程组和潜在的自定义线程组插件,如 Ultimate Thread Group、Arrival Thread Group 等。

  1. 我想获取用户测试计划所能达到的总体最大#threads或最大并发(活跃线程)。有没有可能在执行测试计划之前得到这个值?这将帮助我相应地为此测试配置服务器 运行。

  2. 是否可以限制测试计划达到的整体最大并发数? (similar 我们可以使用定时器对 RPS 做什么)(另外,请提及自定义线程组的选项,如 Ultimate 线程组)

这不是您可以有效控制的事情,因为:

  1. 可以将 JMeter 配置为在当前数量不足以 reach/maintain 目标吞吐量时启动额外的线程,方法是使用 Throughput Shaping Timer and Concurrency Thread Group 和反馈函数 [=16] =]

  2. 用户可以使用properties or functions/variables到parameterize/calculate的并发

  3. 用户始终可以使用 JSR223 Test Elements 并执行以下操作:

    ctx.getThreadGroup().addNewThread(0, ctx.getEngine()) 
    

    这不是您可以检测到的东西,因为有许多方法可以调用此函数,包括 reflection

因此,您最多只能依靠 JVM 限制,通过 default 每个线程有 1 兆字节的堆栈大小,这为分配给 Java 的每千兆字节内存提供了 1024 个线程因此您可以根据您的“上限”

增加堆栈大小或减少分配给 JVM 的内存