multithreading - 我如何在 jmeter 中迭代 CSV 创建新线程
问题描述
我正在尝试提出 jmeter 设置,我想在其中读取具有 200000 行的整个 csv 文件,并且我想遍历每行创建新线程,因为我正在使用 JSR223 预处理器,该预处理器需要新线程来从请求正文。由于某种原因,当我使用 while 循环时,只有第一个测试通过,其余测试失败,因为 JSR223 预处理器继续读取前一个线程。如果可用,我也未检查缓存的编译脚本,但仍然没有运气。我还想补充一点,当我明确地将线程数指定为 200000 中的 100 时,我的所有 100 次测试都会通过,因为它每次都会读取新线程。下面是我设置的截图:
这失败了-
这通过 -
我正在使用的 JSR223 预处理器脚本:
def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def newRequest = evaluate(request.inspect())
request.body.each { entry ->
if (entry.getValue().equals('')) {
newRequest.body.remove(entry.getKey())
}
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', new groovy.json.JsonBuilder(newRequest).toPrettyString(), '')
sampler.setPostBodyRaw(true)
使用 while 控制器时的控制台日志
解决方案
替换这个:
sampler.getArguments().removeAllArguments()
经过:
def arguments = new org.apache.jmeter.config.Arguments();
sampler.setArguments(arguments);
如果你想正确地学习 jmeter,这本书会对你有所帮助。
推荐阅读
- image - 新的docker镜像如何有依赖的子镜像
- javascript - 从数组元素创建 js 语句
- html - 当输入名称包含数组时如何使用浏览器自动完成?
- java - 使用方法引用对方法进行流检查不为空
- laravel - 如何修复错误的文本编码(ðø)?
- flutter - fontAwesome 图标在我的颤振应用程序中不起作用
- django - Django 在 url 中显示 csrf 中间件令牌是否安全?
- sql - 如何避免基于 IF 条件的 2 个选择查询
- django - Django 模型继承了所有超模型字段,除了 IntegerField
- c# - 当 JSON 包装器中有 JSON 有效负载时,将字符串美化为 JSON