背景:我有一个DynamoDB表,我只与DAO类进行交互。此DAO类将有关插入/更新/删除操作的调用次数的度量标准记录到boto库。
我注意到我在代码中记录的操作数与AWS监控时消耗的读/写容量相关,但AWS对消耗的测量值是我在代码中记录的操作数的2到15倍。
我知道,与表交互的唯一其他进程是我在AWS UI上的手动查询(这在容量消耗方面是微不足道的)。我也知道每个项目的大小是< 1 KB,这意味着每次调用只需消耗1次。
我使用强一致读取,因此我不喜欢最终一致读取的2倍好处。
我知道在受到限制时boto自动重试最多10次,但很少达到我的限制阈值来触发这样的问题。
话虽如此,我想知道是否有人知道任何因素可能导致对boto w.r.t的调用中的这种差异。实际消费能力。
答案 0 :(得分:1)
虽然我不确定boto AWS SDK的支持,但在其他语言中,可以要求DynamoDB返回作为每个请求的一部分消耗的容量。听起来您正在记录实际请求,而不是API本身。 API返回的值应准确反映消耗的内容。
这种差异的一个可能来源是,如果您正在执行服务器端过滤的查询/扫描请求。 DynamoDB将消耗所有扫描记录的容量,而不仅仅是返回的记录。
出现差异的另一个可能原因是您在AWS控制台中查看的实际指标。如果您正在直接查看CloudWatch指标,请确保根据您感兴趣的指标查看相应的SUM或AVERAGE值。如果您在DynamoDB控制台中查看指标,则您所查看的时间间隔会显着影响图表(例如:以5分钟为间隔出现的短尖峰将在1小时的间隔内平滑)。