JMeter线程组在While循环后不循环,URL列表来自CSV数据集

vs3odd8k  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(268)

我有一个从CSV数据集中提取的URL列表,其中变量定义为url,并使用每个${url}作为while循环的计数器。while循环中的条件仅为${url}。我在CSV数据集中设置了以下选项:
文件结束时回收:假在EOF上停止线程:正确
我在while控制器下有一个HTTP请求采样器,它按预期工作,我的20个URL列表将被成功请求,如果我添加另一个线程,它将并行请求相同的URL,没有问题。
但是,将线程组中的循环迭代设置为2,或者将作为while循环父级的循环控制器设置为2,将不会使用户再次请求URL列表。
我希望能理解这里的逻辑,我的目标是能够设置次数/循环,我希望完整的URL列表被请求,还了解如何设置每次相同的时间之间的延迟(或不同的用户/线程)将请求URL。我知道有常量计时器可以添加到循环控制器....但截至目前,它没有“我不控制while控制器运行的次数,我确信这与“在EOF上停止线程”有关,但我需要这样做,这样EOF就不会被设置为所有未来的URL请求,这是我所看到的,也是Apache文档所说的
如果recycle选项为false,并且stopThread为false,则在到达文件结尾时,所有变量都将设置为。可通过设置JMeter属性csvdataset. eofstring来更改此值。
我想我不明白为什么“在EOF时停止线程”会阻止线程组循环迭代再次运行。我假设一个新的循环迭代=创建了一个新线程,但我想它认为这是同一个线程,当那个线程为1时,它完全停止了。
Screenshot of my thread group in the JMeter GUI

  • 编辑 *

我能够通过以下代码得到我所期望的行为,尽管我不确定哪种代码对于负载测试来说性能更好。我想确保每隔x秒请求一次每个URL,其中x是1到5秒(取决于我能得到的吞吐量)。
如果这是实现我所希望的目标的最佳方法,那么对于性能来说,什么是最好的呢?
1.使用循环控制器代替while控制器。
1.使用了20个线程,这些线程将从CSV文件中的列表中依次请求20个URL中的每一个

  1. CSV数据集已在EOF上回收:True并在EOF上停止线程:假共享模式:所有线程
btxsgosb

btxsgosb1#

如果设置Stop thread on EOF: True,则意味着在读取最后一个条目时,线程(虚拟用户)将关闭,不会再进行迭代或执行更多请求。
如果您希望运行CSV文件中的所有请求,然后继续,您可以查看在JMeter中使用While控制器文章的阅读all Values from the CSV and Continue一章。
如果您需要在CSV文件到达末尾后再次开始阅读CSV文件,则需要设置Recycle on EOF: TrueStop thread on EOF: False或切换到__CSVRead()函数

相关问题