Jmeter多用户并发时View results tree监听器会话数据获取错误问题
JMeter多用户并发会话串用问题排查解决步骤
1. 清理录制脚本的硬编码参数
- 打开所有非登录HTTP请求,检查请求头、请求参数、URL路径中是否残留录制时的固定会话标识(比如
sessionId、token、userId这类字段),如果存在硬编码值,全部替换为后续从登录响应提取的对应动态变量 - 检查全局/局部HTTP请求头管理器中是否存在录制时写入的固定
Cookie、Authorization等认证类头信息,直接删除固定值,保留Cookie管理器自动管理逻辑即可 - 若登录请求存在302重定向,确认登录请求的
跟随重定向选项已勾选,避免会话参数未被正确携带到重定向后的请求中
2. 校验会话参数提取逻辑的配置
- 确认从登录响应中提取会话参数的元件(JSON提取器/正则表达式提取器)挂载在登录请求子节点下,而非线程组根节点下,避免提取逻辑作用到其他请求导致变量覆盖
- 检查提取器的变量名全局唯一,每个会话参数的
引用名称无重复,后续请求引用的变量名和提取器配置的名称完全一致 - 并发执行场景下不要勾选提取器的
Apply to all threads选项,保证每个线程的提取结果仅作用于当前线程自身
3. 修正CSV数据集配置属性
- 打开CSV数据集配置元件,确认
共享模式设置为当前线程,避免多个线程读取同一行账号数据导致身份重叠 - 确认
在每一个线程迭代开始时重新读取文件选项配置匹配测试场景,避免多线程复用同一组账号参数
4. 调整HTTP Cookie管理器配置
- 确认HTTP Cookie管理器挂载在对应线程组下,每个线程组独立配置一个,不要放在测试计划根节点全局共享
- 勾选
Cookie Policy为standard或者compatibility,不要选择ignoreCookies - 确认
每次迭代清除Cookie、线程间不共享Cookie两个选项已勾选,仅勾选全局清除缓存、Cookie选项无法避免多线程会话串用
5. 调试验证逻辑正确性
- 在线程组下添加
Debug Sampler和查看结果树,运行单轮4线程测试,查看每个线程的Debug Sampler输出,确认每个线程的用户名、提取的会话参数变量值均独立不重复 - 逐个查看每个线程非登录请求的
请求标签页,确认请求中携带的会话标识都是当前线程自身的,而非录制时的固定值或者其他线程的值
内容的提问来源于stack exchange,提问作者Jyothi Mudaliar
相关产品推荐
相关产品推荐

