为什么脚本中设置了Once Only Controller,压测的时候还是会重复发请求?

更新时间:
复制 MD 格式

问题现象

如果您在本地JMeter脚本中配置了一个线程组,并在其内部配置了仅一次控制器(Once Only Controller),但是将脚本上传至PTSJMeter压测后,线程组的请求还是会循环重复执行。

在 JMeter Summary Report 中,Once Only Controller 下的 HTTP 请求共执行了 20 次(# Samples 为 20),平均响应时间 31ms,错误率 15.00%,吞吐量 20.4/sec,表明请求随线程循环重复执行而非仅执行一次。

可能原因

因为PTS中增加了可调速及设置非固定量级施压的功能,会改变原生的Thread Group设置,使得JMeter脚本中Once Only Controller的配置不生效。此外,如果JMeter脚本中只有一个可执行的Once Only Controller,则用PTS进行压测和脚本在本地调试并无区别,达不到性能测试的目的。

解决办法

请在同一个线程组中,保证除Once Only Controller外,仍有其他生效的Sampler,这样Once Only Controller中的内容只会执行一次,而其余的Sampler会根据配置循环执行。

按照上述方式调整后,运行压测可在 Summary Report 中查看结果:共 3309 个请求全部成功,错误率为 0.00%,平均响应时间 24ms,吞吐量 714.0/sec。其中 HTTP Request-out 为 Once Only Controller 外的 Sampler,按配置循环执行了 3289 次。