测量运行之间的性能下降

Measuring performance degradation between performance between runs

我想知道在蝗虫中是否有一种标准方法来检测和警告 运行 之间的性能下降。例如

假设我有一个端点 GET /helloworld returns 一个 json 像:

{"message":"hello world"} 在性能测试套件的 运行1 上,响应时间是 1 秒,但是 运行 宁 locust 命令,现在 returns 3 秒。在我设计的示例中,假设 3 秒是 'acceptable' 响应时间,因此我们不想让测试失败。但是,端点的性能已经下降,我们想就此发出警告。在蝗虫中实现这一目标的最佳方法是什么?

我想也许在每个 运行 之后将结果保存在 csv 中,并与 current/last 运行 产生的 csv 进行比较,但是有没有更简单的方法来实现这一点?谢谢!

也许 locust-plugins 的 —check-avg-response-time 符合您的需要?它记录一条消息并更改 Locust 的进程退出代码。

这样使用:

locust -f locustfile_that_imports_locust_plugins.py --check-avg-response-time 50

https://github.com/SvenskaSpel/locust-plugins/blob/9a4eb77ac4581871db951b454631dc6c49fa1c7a/examples/cmd_line_examples.sh#L6

有关更高级的 comparison/tracking 选项,您可能需要查看 Locust Dashboards/Timescale https://github.com/SvenskaSpel/locust-plugins/tree/master/locust_plugins/timescale

虽然它没有任何 built-in 性能下降的信号,但它确实有一个很好的运行时间图,并启用 after-the-fact 分析。

这实际上取决于您的项目有多大以及您需要评估多少数据。

我们正在为此目的使用 keepn (https://keptn.sh/)

如果要部署它,请准备 SLI/SLO 文件,以便将 Locust 与 Keptn 集成。负载测试完成后,将触发给定数据的评估。

在我们的案例中,Jenkins 构建设置为 Pass/Warn/Fail 状态,具体取决于评估结果。

有一些规则可以比较最后 X 个样本的数据。 最终,你需要收集100点才能拥有Green build

在降级时,你将有更少的点数导致失败。

Score graph

Latency graph