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

JMeter基于动态UID生成并行请求的实现方案求助

动态并行处理多UID请求的JMeter解决方案

核心思路

利用Parallel Sampler结合JSR223 PreProcessor(Groovy),根据正则提取的动态UID列表在运行时生成所有需并行发送的请求,彻底解决ForEach顺序执行或嵌套Parallel Controller仅发1个请求的问题。

具体配置步骤

  1. 添加Parallel Sampler

    • 在测试计划对应位置添加Parallel Sampler(需提前安装Parallel Sampler插件)。
    • 在Sampler配置中,设置Variable name containing request list为parallelRequests(需与后续脚本变量名一致)。
  2. 为Parallel Sampler添加JSR223 PreProcessor

    • 右键点击Parallel Sampler → 添加 → 前置处理器 → JSR223 PreProcessor。
    • 选择脚本语言为Groovy(性能优于其他脚本语言,优先推荐)。
  3. 编写Groovy脚本
    将以下脚本粘贴到JSR223 PreProcessor的脚本框中,根据实际API需求调整URL、请求方法、头信息和请求体:

// 获取正则提取的UID总数
def uidTotal = vars.get("UID_matchNr") as Integer

// 初始化请求列表
def parallelRequests = []

// 遍历所有UID,生成对应请求
for (int i = 1; i <= uidTotal; i++) {
    // 获取当前循环的UID值
    def currentUid = vars.get("UID_${i}")
    
    // 构建请求URL(替换为实际接口地址,参数按需调整)
    def requestUrl = "https://your-target-api.com/process?uid=${currentUid}&source=jmeter"
    
    // 构建请求头(根据接口要求添加,无需项可删除)
    def requestHeaders = [
        "Content-Type": "application/json",
        "X-Request-ID": UUID.randomUUID().toString(),
        "Authorization": "Bearer ${vars.get('auth_token')}" // 若需认证Token,提前存入变量
    ]
    
    // POST请求需构建请求体(GET请求可删除此部分)
    def requestBody = """
    {
        "uid": "${currentUid}",
        "operation": "validate",
        "timestamp": ${System.currentTimeMillis()}
    }
    """
    
    // 将当前请求加入列表
    parallelRequests.add([
        url: requestUrl,
        method: "GET", // 改为POST/PUT等对应方法
        headers: requestHeaders,
        body: requestBody // POST时保留,GET时删除
    ])
}

// 将请求列表存入变量,供Parallel Sampler读取
vars.putObject("parallelRequests", parallelRequests)

关键说明

  • 正则提取器配置:确保正则提取器匹配编号设为-1,JMeter会自动生成UID_1、UID_2...UID_N变量,以及UID_matchNr变量存储总数量。
  • 脚本适配:根据实际接口修改requestUrl、method、requestHeaders和requestBody,GET请求可移除body字段,表单提交可用parameters: [key: "value"]替代body。
  • 插件依赖:需通过JMeter插件管理器安装Parallel Sampler插件。

注意事项

  • Groovy性能:Groovy脚本执行效率高,处理300-350个请求无明显性能瓶颈。
  • 变量作用域:确保UID及其他需用到的变量(如auth_token)在JSR223 PreProcessor作用域内可访问。
  • 并行控制:Parallel Sampler默认并行发送所有请求,请求数量由UID总数动态决定,无需额外设置线程数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:47:42