Jmeter 每个控制器具有多个线程

Jmeter 每个控制器具有多个线程,jmeter,Jmeter,我已经创建了一个测试用例,在这个测试用例中,我需要从目录中读取文件,并为每个文件调用HTTP请求。 因此,我创建了一个Bean采样器来列出目录中的文件,并将其放入一个变量中,该变量将由For-each控制器使用。我将HTTP请求保存在每个控制器的内部,以便为每个文件调用HTTP请求。 上述方法就像一根线的冠军。当我更新线程数>1时,我看到一个奇怪的行为,HTTP请求的数量甚至少于线程的数量。 我希望HTTP请求是(线程数*文件数*循环计数) 请告诉我是什么问题 我附上了更好的说明截图 Fil

我已经创建了一个测试用例,在这个测试用例中,我需要从目录中读取文件,并为每个文件调用HTTP请求。 因此,我创建了一个Bean采样器来列出目录中的文件,并将其放入一个变量中,该变量将由For-each控制器使用。我将HTTP请求保存在每个控制器的内部,以便为每个文件调用HTTP请求。 上述方法就像一根线的冠军。当我更新线程数>1时,我看到一个奇怪的行为,HTTP请求的数量甚至少于线程的数量。 我希望HTTP请求是(线程数*文件数*循环计数)

请告诉我是什么问题

我附上了更好的说明截图

File folder=新文件(“D:\\OIT\u函数\\inputSamples\\files\\large”);
File[]files=folder.listFiles(新文件过滤器(){
公共布尔接受(文件){
返回file.isFile();
}
});
对于(int i=0;i

如果您看到聚合图,可以看到只调用了151个请求,而调用了100个bean采样器


我希望调用[100(线程数)*文件数*循环计数]HTTP请求

问题是您违反了3个最佳做法:

  • 不过,您正在使用Beanshell编写脚本。特别是对于您的用例,您可以使用插件
  • 在每次迭代中,每个线程都在读取文件,尽管只能执行一次
  • 您正在GUI模式下运行测试尽管GUI模式用于测试开发和调试,但测试必须在GUI模式下执行

  • 在没有看到stdout和jmeter.log文件的情况下,我无法准确地判断出哪里出了问题,但肯定是因为上述几点(如果不是全部的话)

    请看这里的一个问题。如果可能,还提供(比图片更好的代码片段)。这样我们可以帮助得更好。@GiorgiTsiklauri提供了bean Sampler的代码我对糟糕的设计感到抱歉。我明白我应该读一次文件清单。你能告诉我怎么做吗。我尝试在线程组之前使用Bean处理器。我不习惯groovy,所以不知道如何使用它
    File folder = new File("D:\\OIT_FUNCTIONS\\inputSamples\\files\\large");
    
    File[] files = folder.listFiles(new FileFilter() {
        public boolean accept(File file) {
            return file.isFile();
        }
    });
    
    for (int i=0; i < files.length; i++) {
        vars.put("file_" + i, files[i].getAbsolutePath());
        MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();
        String mimeType = fileTypeMap.getContentType(files[i]);
        vars.put("mime",mimeType);
    }