丢失的迭代
有时,场景无法运行预期的迭代次数。k6 会在一个计数器指标 dropped_iterations
中跟踪未发送的迭代次数。当您调试执行器或分析结果时,丢失的迭代次数可能是非常有价值的数据。
丢失的迭代通常由于以下两个原因之一发生
- 执行器配置不足。
- SUT 无法处理配置的虚拟用户到达率。
配置相关的迭代丢失
不同类型的执行器中,迭代丢失的原因各不相同。
对于 shared-iterations
和 per-vu-iterations
,如果在所有迭代完成之前场景达到其 maxDuration
,则会丢失迭代。为了解决这个问题,您可能需要增加持续时间的值。
对于 constant-arrival-rate
和 ramping-arrival-rate
,如果没有可用的虚拟用户,则会丢失迭代。如果这发生在测试开始时,您可能只需要分配更多虚拟用户。 如果这发生在测试后期,丢失的迭代可能表明 SUT 性能正在下降,并且迭代需要更长时间才能完成。
SUT 相关的迭代丢失
在高延迟或迭代持续时间过长达到一定程度时,k6 将不再有空闲的虚拟用户以配置的速率启动迭代。因此,执行器将丢失迭代。
这些丢失的迭代原因各不相同
- SUT 响应变得非常慢,以至于 k6 开始丢弃队列中计划的迭代。
- SUT 迭代持续时间变得非常长,以至于 k6 需要调度更多虚拟用户才能达到目标到达率,从而超出计划的迭代次数。
由于原因各异,丢失的迭代可能意味着不同的事情。少量丢失的迭代可能表示快速的网络错误。大量丢失的迭代可能表示您的 SUT 完全停止响应。
设计测试时,请考虑可接受的迭代丢失率(错误预算)。为了断言 SUT 在此错误预算内响应,您可以在阈值中使用 dropped_iterations
指标。