菜单
开源

丢失的迭代

有时,场景无法运行预期的迭代次数。k6 会在一个计数器指标 dropped_iterations 中跟踪未发送的迭代次数。当您调试执行器或分析结果时,丢失的迭代次数可能是非常有价值的数据。

丢失的迭代通常由于以下两个原因之一发生

  • 执行器配置不足。
  • SUT 无法处理配置的虚拟用户到达率。

不同类型的执行器中,迭代丢失的原因各不相同。

对于 shared-iterationsper-vu-iterations,如果在所有迭代完成之前场景达到其 maxDuration,则会丢失迭代。为了解决这个问题,您可能需要增加持续时间的值。

对于 constant-arrival-rateramping-arrival-rate,如果没有可用的虚拟用户,则会丢失迭代。如果这发生在测试开始时,您可能只需要分配更多虚拟用户。 如果这发生在测试后期,丢失的迭代可能表明 SUT 性能正在下降,并且迭代需要更长时间才能完成。

在高延迟或迭代持续时间过长达到一定程度时,k6 将不再有空闲的虚拟用户以配置的速率启动迭代。因此,执行器将丢失迭代。

这些丢失的迭代原因各不相同

  • SUT 响应变得非常慢,以至于 k6 开始丢弃队列中计划的迭代。
  • SUT 迭代持续时间变得非常长,以至于 k6 需要调度更多虚拟用户才能达到目标到达率,从而超出计划的迭代次数。

由于原因各异,丢失的迭代可能意味着不同的事情。少量丢失的迭代可能表示快速的网络错误。大量丢失的迭代可能表示您的 SUT 完全停止响应。

设计测试时,请考虑可接受的迭代丢失率(错误预算)。为了断言 SUT 在此错误预算内响应,您可以在阈值中使用 dropped_iterations 指标。