【问题标题】:How can I find out what is consuming my DynamoDb tables Read Capacity?如何找出消耗我的 DynamoDb 表读取容量的内容?
【发布时间】:2018-04-30 14:22:23
【问题描述】:

我们有一个我们认为可以关闭和删除的 DynamoDB 表。我们关闭了查询它的 Web 服务的调用者(并且可以在 Web 服务器指标上看到调用者已降至零),但 AWS 控制台仍显示读取容量消耗大于零。

但是,与读取有关的所有其他图表均未显示任何数据:获取延迟、放置延迟、查询延迟、扫描延迟、获取记录、扫描返回的项目计数和查询返回的项目计数都是空白的。在我知道正在使用的其他表上,这些图表显示一些数据 > 0。

在我知道正在使用的其他表上,读取容量图仅显示已配置的行,没有消耗的行。

仍在通过 Lambda 过滤和聚合来自 Kinesis 流的事件写入此表。我查看了 Lambda 代码,它并没有专门从表中读取任何内容——当 lambda 更新或覆盖现有键的值时,读取容量是否会被消耗?

【问题讨论】:

  • 如果这个表可以删除。你可以先关闭 Lambda 看看会发生什么。
  • 据我所知,更新不应该消耗读取容量。我会尝试在一段时间内设置低读取容量限制(例如1),然后查看您的代码从哪里开始引发错误。
  • 您的 Lambda 函数是否使用此 DynamoDB 表中的流?不确定流读取是否计为表读取;如果您使用的是流,可能值得检查...

标签: amazon-web-services amazon-dynamodb aws-lambda access-control


【解决方案1】:

我通过 AWS 支持打开了一张票,他们能够找到消耗读取容量的 IP。他们使用内部工具来查询客户无法使用的日志。他们还确认这些事件不会发送到 Cloudtrail 日志中,这些日志仅包含与表相关的事件,例如重新配置、关于指标的查询等。

他们还分享了与该问题相关的这个金块:

问:当 lambda 更新或覆盖现有键的值时,读取容量是否会被消耗?

答:是的,当您发出更新项目操作时,Dynamodb 首先执行读取/获取操作,然后执行 PutItem 以插入/覆盖现有项目。这很昂贵,因为它同时消耗 RCU 和 WCU。我还确认没有在此表上进行 UpdateItem 操作。

他们还向我指出了更多 Clo​​udwatch 指标,这些指标可以更清楚地了解幕后表格的情况。通过带有链接的导航找到这个,你去

  • Cloudwatch 服务
  • 指标在左侧栏中
  • 所有指标标签
  • 向下滚动到 AWS 命名空间部分(自定义命名空间部分位于顶部,如果您已定义任何自定义指标)
  • 选择 DynamoDB
  • 选择表操作指标
    指标将按表名组织。最有帮助的是 Operation=Query, Metric Name=Returned Item Count。

所以我的问题的唯一答案是:打开 AWS Support 票证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多