更新jmeter数据集配置以使用另一个线程更新其中的令牌

问题描述 投票:0回答:1

Error Image JmeterError Image JTL

我的API调用使用令牌,令牌有效期为4分钟。在CSV数据集配置文件中,我们为每个用户在每行中都有带有令牌的记录。我正在运行此测试20分钟。我在CLI模式下运行JMeter,并运行另一个线程每2分钟对其​​进行更新。线程使用自定义库创建令牌。

现在的问题是:仅在某些情况下,Jmeter在文件被单独的线程更新时读取文件,这会导致错误。

我怎么知道这是由线程引起的:

  1. 该错误在线程更新文件后出现。在此之前,一切正常。

  2. 我的CSV具有参数服务器,端口号,用户标识,用户名,密码,teamspaceID,令牌

并且在JMeter脚本中使用URL,例如“ Http:// $ {server}:$ {portNumber}”但是在.jtl文件中,很少有记录包含“ http://令牌字符串的某些部分:8082”

还有其他有效的方法可以解决此问题

multithreading api csv jmeter
1个回答
0
投票

这是经典的race condition,JMeter的CSV数据集配置不希望文件在运行时发生更改,很难在不查看测试计划的情况下提出确切的解决方案,但是您可以考虑以下替代方案:

  1. 在使用JSR223 PreProcessor的请求之前立即生成令牌,默认情况下,预处理器所花费的时间不包括在Sampler的经过时间中,因此您只能在结果文件中获得HTTP请求执行时间
  2. Critical Section Controller下放置不是线程安全的逻辑
  3. 使用Inter-Thread Communication Plugin代替临时CSV文件来保持/传递令牌
© www.soinside.com 2019 - 2024. All rights reserved.