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

JMeter单线程组多会话冲突问题及解决方案咨询

JMeter并行执行新增用户与后续登录的会话冲突解决方案

问题背景

测试场景:单用户向数据库新增用户,新增完成后该新用户立即登录,整体流程需并行执行,但登录必须在新增完成后触发。
遇到的核心问题:Cookie Manager无法从setUp线程获取有效sessionID,只能通过Header Manager手动插入Cookie;但新用户登录时会覆盖原用户的会话Cookie,导致并行运行时原用户因会话被替换为无权限的新用户,无法完成新增操作。

可行解决方案

方案1:线程组绑定并行执行

将新用户登录操作放在独立线程组,通过线程编号关联实现与原线程的绑定,确保每个新增用户的线程对应一个登录线程,且登录在新增完成后触发:

  1. 原线程组(新增用户):
    • 执行用户新增逻辑后,添加BeanShell Sampler,设置线程级属性标记新增完成:
      props.put("user_created_" + ctx.getThreadNum(), "true");
      
  2. 登录线程组:
    • 取消勾选线程组的「Run thread groups consecutively」,确保与原线程组并行
    • 添加While Controller,循环等待对应原线程的新增完成标记,条件表达式:
      ${__property(user_created_${__threadNum},)} == ""
      
    • While Controller内添加Test Action Sampler(仅做等待),配合Constant Timer设置短间隔(如100ms)
    • 等待标记出现后,执行新用户登录逻辑

方案2:清空Header Manager指定Cookie值

在新用户登录前,通过脚本清空Header Manager中的sessionID,使其重新请求新会话。修正你之前的脚本,避免重复新增Header,直接修改或移除目标Header:

方式1:移除后重新添加空值Header

import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.protocol.http.control.HeaderManager;

HeaderManager headerManager = sampler.getHeaderManager();

if (headerManager != null) {
    // 移除已存在的目标Header
    headerManager.removeHeaderNamed("Cookie"); // 替换为你的sessionID对应的Header名称
    // 添加空值Header,触发系统重新生成会话
    headerManager.add(new Header("Cookie", ""));
}

方式2:直接修改已有Header的值

import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.protocol.http.control.HeaderManager;

HeaderManager headerManager = sampler.getHeaderManager();

if (headerManager != null) {
    Header sessionHeader = headerManager.getHeaderNamed("Cookie"); // 替换为你的Header名称
    if (sessionHeader != null) {
        // 清空Header值
        sessionHeader.setValue("");
    } else {
        // 若Header不存在则新增空值
        headerManager.add(new Header("Cookie", ""));
    }
}

注意:脚本需放在新用户登录请求前的BeanShell PreProcessor中执行,确保请求发送前已清空Header。

内容的提问来源于stack exchange,提问作者Dániel Koppa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:08:17