为什么增量加载和增加线程被认为是最佳实践?

Why incremental load and ramping up the threads is considered a best practice?

我正在研究性能测试,想问问为什么缓慢上升然后 运行 在最大负载下然后缓慢下降被认为是更好的范例。测试团队花费大量时间来实现同样的完美图表。 虽然它完全是主观的,但为什么与一次启动所有线程相比,这种方法总是更受欢迎。

一次启动所有线程(或者,更准确地说,瞬间从零流量变为最大流量)将 "shock" 目标系统并可能使某些 Web 加速功能失效。例如,如果所有客户端同时启动,服务器端和客户端上的缓存最初可能不会发生。如果你慢慢地增加,缓存就可以填充,一旦你达到最大值 traffic/VUs,缓存未命中可能很少见。

应用程序还需要增加它们用于服务更多客户端的资源量 - 分配内存、文件描述符等 - 如果您立即从 0 增加到 1,000,000 个客户端,服务器端将有很多即时资源分配要做,而如果你慢慢提升,资源分配将不会成为问题。

如果您正在 运行 进行某种自动缩放,这当然也是一个问题 - 不切实际的快速启动时间将使自动缩放难以跟上,因此导致目标系统在真实情况下不会遇到的问题。

在某些情况下,从 0 到最大值 VUs/traffic 确实有意义,这就是您希望您的网站发生这种情况的时候。您可能正在测试您抵御拒绝服务攻击的能力,或者您可能 运行 一个网站经历了极度突发的流量(例如,一个在线拍卖网站或者一个发布热门活动门票的活动网站在特定时间)。