我们服务的流量并非完全可预测。为了帮助保持服务略微过度配置,并提前警告因流量增加而导致的任何性能下降,我们维护了一种“连续缓冲负载生成器”。这会在用户流量之上对我们的生产 API 产生持续的负载。如果我们发现服务正在降级,它会自动关闭,理想情况下,我们有一点时间来找出问题并在自然用户流量与导致服务降级的增强流量相匹配之前扩大规模。一旦服务再次稳定,缓冲负载就会重新打开。
虽然我们一直将这种持续的流量生成称为“持续负载测试”,但这似乎是令人困惑的措辞,并且很难区分“实际”负载测试(我将称之为具有定义的开始和结束的实验,加载模式,以及最后的二进制通过/失败结果)。我几乎想将其称为“金丝雀流量”,因为我们会发送额外的流量以在用户遇到问题之前警告我们,但这与业内对金丝雀含义的一般理解不太相符.
这是在负载平衡、自动缩放等之上的附加策略。我们不会尝试在这里替换任何行业标准的流量管理步骤。
我怀疑这是不知道谷歌正确用词的情况,所以:
- 如果这是其他地方使用的模式,它叫什么?
- 或者,如果没有其他人这样做,为什么不呢?我完全愿意相信通过其他类型的测试或监控可以更好地获得这个结果。
合成或主动监控是模拟应用程序实际执行的人工负载的术语。在测量应用程序性能的情况下。
模拟您的实际负载非常棒。但是,在生产中消耗相当大一部分资源的效率并不高,它会消耗资源。更重要的是,自动禁用机制对于保持良好的性能变得至关重要。取而代之的是,始终将油门降低到最低水平,并继续测量响应时间和错误率。永远不要停止测量,因为降级会显示事件对用户的影响。
现实的负载生成器有利于测试和容量规划。在测试环境中配置不同的计算实例大小,并推动负载直到它崩溃。作为高可用性测试或滚动升级的一部分,临时添加一些负载以验证原本空闲的系统。
确定响应时间目标是什么。了解每秒多少请求是安全的。将自动缩放或警报设置为可操作的阈值。
衡量服务水平目标以及了解限制将为您提供进行适当容量规划的工具。无需人为地消耗您的缓冲容量。