问题描述
我有一个分布式JMeter设置,我想围绕它创建一个Java服务包装器。
测试计划(JMX文件)由用户提供。因此,我不知道其中使用的属性和配置。用户测试计划可以具有多个线程组以及可能的自定义线程组插件,例如Ultimate Thread Group,Arrival Thread Group等。
-
我想获得用户测试计划可以实现的总体最大#threads或最大并发性(活动线程)。在执行测试计划之前能否获得该值?这将帮助我为相应的测试配置服务器。
-
是否可以限制测试计划实现的总体最大并发性? ({similar就是我们可以使用计时器对RPS进行的操作)(另外,请提及自定义线程组(例如Ultimate线程组)的选项)
解决方法
这不是您可以有效控制的事情,因为:
-
可以通过将Throughput Shaping Timer和Concurrency Thread Group与反馈功能配合使用,如果当前数量不足以达到/维持目标吞吐量,则可以将JMeter配置为启动额外的线程
-
用户可以使用properties或functions/variables来参数化/计算并发性
-
用户始终可以使用JSR223 Test Elements并执行类似的操作:
ctx.getThreadGroup().addNewThread(0,ctx.getEngine())
这是您无法检测到的,因为有很多调用此功能的方法,包括reflection
因此,您最多可以依靠JVM限制,到default,每个线程有1 MB的堆栈大小,这为分配给Java的每GB内存提供了1024个线程,因此您可以增加堆栈根据您的“上限”调整大小或减少分配给JVM的内存