You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter动态线程组中获取当前步骤的活跃线程数量?

JMeter动态线程组获取当前步骤活跃线程数方案

你之前使用的prev.getAllThreads()依赖上一个采样器的执行结果,第一步没有前置采样器时自然返回空,不适合实时统计当前步骤的线程数,可直接通过JMeter内置的上下文API实现需求:

方法1:获取当前步骤所属线程组的活跃线程数

在需要统计的步骤同级添加JSR223预处理器/后置处理器,写入以下Groovy代码:

// 直接从上下文获取当前线程所属的线程组实例
def currentThreadGroup = ctx.getThreadGroup()
// 读取实时活跃线程数
def activeThreadCount = currentThreadGroup.getNumberOfActiveThreads()
// 存入JMeter变量供后续采样器、断言等组件调用
vars.put("current_group_active_threads", activeThreadCount.toString())

该方法无需依赖前置采样器,任意步骤执行时都可以拿到当前线程组的实时活跃数,完美兼容Stepping Thread Group、Ultimate Thread Group等第三方动态线程组。

方法2:获取所有线程组的总活跃线程数

如果需要统计测试计划内所有线程组的总活跃数,使用以下代码:

import org.apache.jmeter.engine.StandardJMeterEngine
import org.apache.jmeter.threads.ThreadGroup

def totalActive = 0
def testEngine = ctx.getEngine()
if (testEngine instanceof StandardJMeterEngine) {
    def allGroups = testEngine.getThreadGroups()
    allGroups.each { group ->
        if (group instanceof ThreadGroup) {
            totalActive += group.getNumberOfActiveThreads()
        }
    }
}
vars.put("total_active_threads", totalActive.toString())

注意事项

  • JSR223元件的语言请选择groovy,相比其他脚本语言性能高10倍以上,不会影响压测性能
  • 如果你需要在多个步骤复用统计逻辑,可以把JSR223元件放在线程组根目录,即可对线程组下所有步骤生效

内容的提问来源于stack exchange,提问作者Mats Johansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:36:03