Locust - 如何延迟 RPS 数据的收集,直到所有线程都启动

Posted

技术标签:

【中文标题】Locust - 如何延迟 RPS 数据的收集,直到所有线程都启动【英文标题】:Locust - how to delay collection of RPS data until all threads have started 【发布时间】:2021-08-01 07:47:42 【问题描述】:

场景

locust 使用渐变生成率测试,图表看起来像 45 度角。

我想知道所有线程都在运行时系统的 RPS。

locust 的开箱即用 RPS 值将包括运行开始时线程较少时的 RPS 值。

    如何自定义我的 locust 脚本以从所有线程都运行时开始计算 RPS? 这是一种合理的负载测试做法吗? 另一种选择是尽可能“模拟现实”(实际上,系统启动时会加速)。要获得更具代表性的 RPS 值,请运行更长时间的测试。

【问题讨论】:

【参考方案1】:

在添加新负载时,您需要注意系统可以处理的内容有很多原因。接受连接可能会出现性能问题,例如,如果您的 SSL/TLS 设置或库不正确或较旧。在某些情况下,出现新负载可能会影响已经连接到并使用您的系统的用户。当接受新连接时,您甚至可能会发生额外的服务器逻辑。简而言之,您应该使用上面的 3)。

但是,有足够多的人喜欢忽略或掩饰在加速过程中的情况,Locust 确实有一个 configuration option --reset-stats,一旦所有产卵完成,它会自动重置所有收集的统计数据,因此看起来好像负载测试开始时所有用户都立即连接。这应该可以满足您的要求。

【讨论】:

优秀的答案。我想补充的一件事是,在加速期间响应时间/吞吐量的变化通常是为什么系统没有执行的关键指标:如果响应时间一开始很短,但在加速期间增加加速它表示系统过载/饱和。如果响应时间稳定(并且 RPS 在加速期间线性增加),系统仍有剩余容量(可能仍然很慢,但尚未饱和)

以上是关于Locust - 如何延迟 RPS 数据的收集,直到所有线程都启动的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Locust 负载测试工具中计算每秒的实际请求

Locust 是不是使用 IP 欺骗?

Locust优势在哪里

Locust 确实以 2xx 响应,但未能收集请求统计信息

locust参数化

k6:增加VU数量的每个阶段如何管理rps-limit