当线程减少时,为什么不同的结果会导致JMeter?

时间:2017-03-25 04:30:40

标签: jmeter jmeter-plugins

我有一个测试计划,我必须从CSV文件中选择100个用户。如果我将线程数计为500并将循环计数设置为1,那么我可以看到490失败并且只传递了10个。但与此同时,如果我将线程设置为5并将循环计数设置为100,则会传递所有测试。在请求总数为500的情况下,这些不一样吗?

这是因为500个线程和5个线程吗?

2 个答案:

答案 0 :(得分:1)

如果启动500个线程,默认情况下,该文件只打开一次,每个线程将使用该文件中的不同行。但是,行传递给线程的顺序取决于执行的顺序,这可能会因迭代而异。

更改您的Jmeter CSV-DataSet-Config属性“EOF上的回收 - 真实”  ;您的问题将解决

希望这有帮助!

答案 1 :(得分:0)

您会得到不同的结果,因为您应用了不同的加载模式。 JMeter的行为如下:

  • 每个Thread Group在启动期内启动线程(虚拟用户)
  • 每个帖子开始执行Samplers颠倒(或根据Logic Controllers
  • 当线程没有更多的采样器要执行或循环进行交互时,它正在关闭

原因可能在于:

  1. 您的应用程序无法处理500个用户。检查其日志以获取错误详细信息。如果没有特定错误,则可能缺少硬件资源,请使用JMeter PerfMon Plugin Telemetry重新运行测试以检查增加的负载对硬件资源消耗的影响
  2. 您的应用程序底层组件不适合高负载。某些应用程序和数据库服务器具有连接限制,低内存分配等,换言之,适用于开发和调试的配置。生产部署采用完全不同的配置,因此需要进行检查和修改
  3. 您的JMeter实例无法创建所需的负载。与第2点类似,JMeter默认配置适用于测试开发,但是在运行负载测试时,您需要注意一些重点:

    • 增加JMeter的JVM堆大小
    • 以非GUI模式运行测试
    • 在测试运行期间禁用所有侦听器

      有关详细信息,请参阅JMeter用户手册的Reducing resource requirements章节