我有一个具有5个读和5个写容量的发电机表。在这个表中,我有两条记录。
然后,我决定看看通过一次推入大量写入(一次突发大约4000条记录),我会得到什么样的错误响应。蓝色的“消耗”线直接越过红色的“容量”线,但是我没有得到任何类型的错误信息。
指标显示发生了节流,但如果我超过两个容量级别,我的读取和写入仍然会发生。
我已经花费了超过30分钟的时间来推送读和写,远远超出了容量,目前还没有错误。
我不确定这是不是因为我在node js中使用了官方的javascript SDK,它可能会透明地处理节流并重试已节流的查询?
我希望有人能在这方面给我一些指导。
谢谢
发布于 2016-04-18 14:59:13
我只想在@Luc Hendriks的答案中添加一个关于节流的通知
即使你超出了“突发容量”,DynamoDb开始节流,你也会相对较少地获得ProvisionedThroughputExceededException (根据我的经验)。这是因为SDK静默地重试限制的请求(所以您是对的,SDK透明地处理限制)。
您可以使用maxRetries参数来禁用自动重试,这样在您看到指标中的节流后,您将立即获得ProvisionedThroughputExceededException。
以下是如何在不自动重试的情况下执行更新请求的示例:
var aws_dynamodb = new aws.DynamoDB({maxRetries: 0}),
aws_dynamodb_doc = new aws.DynamoDB.DocumentClient({service: aws_dynamodb});
// ...
aws_dynamodb_doc.update(params, function(err, data) {
// ...
});发布于 2016-04-18 04:26:49
这是因为突发容量。您可以在亚马逊网络服务文档上阅读更多信息:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting
基本上,这意味着你可以拥有300秒的“存储容量”,并在负载达到峰值时将其用作池。在您的情况下,这将是一个1500个请求的池,您可以立即使用,并在容量未使用时重新填充。
https://stackoverflow.com/questions/36681511
复制相似问题