我有一个非常大的CSV文件(8000多项)的URL,我正在使用CSV数据集配置元素阅读。它填充HTTP请求采样器的路径并使用while控制器进行迭代。
这很好,除了我想让每个用户(线程)从CSV URL列表中选择一个随机URL。我不想要的是每个线程顺序使用CSV项目。
我能够通过带有多个HTTP请求采样器的随机顺序控制器来实现这一点,但是8000多个HTTP采样器确实将jmeter陷入了无法使用的状态。所以这就是我将HTTP Sampler URL放在CSV文件中的原因。但是,我似乎无法将随机顺序控制器与CSV文件数据一起使用。那么如何实现每个线程的随机CSV数据项选择呢?
答案 0 :(得分:8)
还有另一种方法可以实现这一目标:
它并不是随机的,文件仍然按顺序读取,但是您的工作线程会在文件中跳转。它对我有用; - )
答案 1 :(得分:3)
读取csv数据时没有随机选择功能。原因是您需要首先将整个文件读入内存才能执行此操作,这对于使用负载测试工具(任何负载测试工具)来说都是个坏主意。
其他商业工具通过自动重新处理数据来解决此问题。在JMeter中,只需使用任意字段对数据进行排序,即可手动完成相同的操作。如果你按Surname排序,那么结果就是有效的随机分布。
请注意。如果确保为CSV数据集配置设置了默认All Threads
,则数据在JMeter进程的范围内将是唯一的。
答案 2 :(得分:1)
正如其他答案所述,你无法随意选择一行是因为你必须将整个文件读入内存效率低下。
为什么不在开始测试之前让JMeter随机处理文件顺序呢?
像perl这样的脚本语言简化了这个:
cat unrandom.csv | perl -MList::Util=shuffle -e 'print shuffle<STDIN>' > random.csv
答案 3 :(得分:0)
我不确定这是否有效,但无论如何我都会建议。
为什么不将您的网址划分为100个不同的CSV文件。然后在每个线程中生成随机数并使用该数字来识别要使用__CSVRead函数读取的CSV文件。
CSVRead“&GT; HTTP://jmeter.apache.org/usermanual/functions.html#_CSVRead
现在唯一的部分我不确定__CSVRead函数是每次都重新打开文件还是在线程之间共享相同的文件句柄。
您可能想尝试一下。请分享您的发现。
答案 4 :(得分:0)
一个非常直接的解决方案。 在CSV文件中,添加另一列(比如B) 在B列的第一个单元格中使用apply = RAND()函数(比如B1)。这将创建随机浮点数。 拖动单元格(例如B1)角以应用所有相应的URL 列B排序 您的网址将随机排序。 删除B列。
答案 5 :(得分:0)
BlazeMeter插件中的新Random CSV Data Set Config应该完全适合您的需求。