如何解决 Amazon Keyspaces 中的自动扩缩问题?

1 分钟阅读
0

我为我的 Amazon Keyspaces(Apache Cassandra 兼容)表开启了 AWS Auto Scaling。但是,我仍然会看到节流,因为使用的容量大于预调配的容量。

简短描述

Amazon Keyspaces 使用跟踪 AWS Application Auto Scaling 的目标。目标利用率百分比值是使用的容量与预调配的容量的比率。

Application Auto Scaling 会代表您创建 Amazon CloudWatch 警报。此警报会调用 AWS Application Auto Scaling,通知 Amazon Keyspaces 调整表的预调配吞吐能力。

用于 Amazon Keyspaces 的 Application Auto Scaling 只有在工作负载保持减少或增加几分钟时才会修改预调配的吞吐量。例如,您将最小读取容量单位(RCU)设置为 100,将目标利用率设置为 70%:

  • 当利用率至少连续三分钟超过 70 个 RCU 时,Application Auto Scaling 会增加预调配的容量。
  • 当利用率连续 15 分钟低于目标 20% 或更低时(50 个 RCU)时,Application Auto Scaling 会减少预调配的容量。

解决方法

Application Auto Scaling 可能不适合在表上运行突增流量负载。这是因为所用容量可能没有足够的连续数据点来满足您的容量需求。在这种情况下,由于所用容量超过预调配的容量,您的表可能会遇到节流。之所以发生这种情况,是因为足够的数据点没有超过 Application Auto Scaling 的利用率阈值,无法扩展您的容量。

要确定所用容量是否高于预调配的容量,请使用 Amazon CloudWatch 指标。使用总和统计数据计算使用的吞吐量。例如,获取一分钟内的总和值。接着,将其除以 60,计算出每秒的平均 ConsumedReadCapacityUnits。请注意,这个平均值无法反映出那一分钟内出现的任何大且短暂的读取活动突增情况。您可以将计算出的值与您为 Amazon Keyspaces 提供的预调配吞吐量值进行比较。

以下是一些解决 Amazon Keyspaces 表上 Application Auto Scaling 问题的最佳实践:

  • 如果表的流量经常不可预测,考虑将表更新为按需模式。按需模式适合运行突增工作负载,因为它可以立即满足您的容量需求。当您的流量变得稳定或逐渐增加时,可以重新开始使用 Application Auto Scaling。
  • 在应用程序中配置重试策略。使用指数回退,然后重试。或者,添加抖动。您可以使用这些方法在后续重试之间引入一些延迟。通过这些方法,您可以确保重试次数不会很快用完。有关更多信息,请参阅指数回退和抖动
  • 不要删除 Amazon Keyspaces 的 Application Auto Scaling 创建的 CloudWatch 警报。如果您删除这些警报,Application Auto Scaling 可能无法按预期运行。如果您不小心删除了这些警报,请关闭 Application Auto Scaling,然后再次将其开启。CloudWatch 会自动重新创建警报。
  • 不要依靠 Application Auto Scaling 来处理偶发的短期活动突增。当流量逐渐增加或减少时,Application Auto Scaling 效果最佳。表的内置容量暴增可应对偶发的活动突增。请注意,Amazon Keyspaces 也可能会在不事先通知的情况下使用容量暴增进行后台维护和其他任务。
AWS 官方
AWS 官方已更新 8 个月前