JMeter线程运行一次,而循环计数器通过恒定吞吐量计时器设置为“永远”

时间:2019-01-27 11:58:15

标签: database testing jmeter threadgroup loop-counter

我在JMeter中有一个测试计划,用于测试一个memSQL数据库,该数据库似乎只在每个线程上运行一次,而不是永远运行。

  • 它具有3个线程组。
  • 每个都有自己的JDBC请求元素(1个用于删除,1个用于插入,1个用于选择)。
  • 我希望所有请求都从csv文件读取参数。我对整个测试计划(共享模式设置为所有活动线程)使用1个CSV数据集配置元素进行了测试,对每个线程组(模式设置为当前线程组)使用了1个CSV数据集配置元素。
  • 用于删除和插入的JDBC请求元素已为Query Type属性设置了准备好的更新语句。
  • 一个用于选择的请求元素已为该字段设置了准备好的选择语句值。
  • 在我尝试过的所有情况下,CSV数据集配置属性都设置为:在EOF上回收-True,在EOF上停止线程-false。
  • 我在整个测试计划中使用恒定的吞吐量计时器元素。基于属性将其设置为所有活动线程(共享)。
  • 就像标题中提到的那样-每个线程组都有“永远计数的循环”复选框。没有使用调度程序,并且在出错时选择了继续按钮(尽管没有任何按钮)。
  • 在摘要报告中,我没有从数据库中获得任何Java异常。仅查询输出和延迟时间。

如上所述,我为所有线程组尝试了1个csv源文件。现在,我创建了3个不同的csv文件,问题仍然存在。我尝试将所有线程的加速时间设置为0、0.1、1、2,但仍然没有运气。

在查看我创建的摘要报告后,我总是看到相同数量的样本。我有3个线程组,每个线程组有80个线程,所以我总是得到240个samepls。即使测试持续了1、2、3分钟等,我也尝试通过关机,停止测试和结束测试来结束测试,

我希望线程继续运行,似乎它们只执行一次工作,然后在测试继续进行时停止。这与恒定吞吐量计时器有关系吗?我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

TL; DR

似乎所有配置都是正确的,但是恒定吞吐量计时器中的实际请求数太低。另外,JMeter尝试设置每分钟的吞吐量,因此测试应该更长一些然后使用该计时器1或2分钟。

一个非常愚蠢的错误,得出的结论是:检查吞吐量值,测试更长的时间。希望这对其他人有帮助。

原因是,在运行jmeter的非gui版本的服务器中,我创建了一个Shell脚本以每秒接收当前测试所需的请求数量,并将其插入计划时间60中的适当字段中。计时器元素。问题是我没有乘以60,因此吞吐量非常低。如此之低,以至于几分钟的测试我总是得到相同的样本数。

如果我要测试更长的时间,我会发现创建了更多的样本,但是由于jmeter延迟了线程以模拟低吞吐量,所以我只看到了第一次迭代。