com.amazonaws.services.dynotdbv2.model.ProvisiedThroughputExceededException:表的配置配置吞吐量级别超过d。考虑使用UpdateTable API提高配置级别(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ProvisionedThroughputE exceededException;请求ID:KHOG5L1S83VU05CAOEJCCPAUVVV4KQNSO5AEMVJF66Q9ASUAAJG)
我的表格描述如下。
$ aws dynamodb describe-table --table-name my_table
{
"Table": {
"TableArn": "arn:aws:dynamodb:us-east-1:188456577:table/my_table",
"AttributeDefinitions": [
{
"AttributeName": "username",
"AttributeType": "S"
}
],
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"WriteCapacityUnits": 10000,
"LastIncreaseDateTime": 1462386432.633,
"ReadCapacityUnits": 10000
},
"TableSizeBytes": 289776,
"TableName": "my_table",
"TableStatus": "ACTIVE",
"KeySchema": [
{
"KeyType": "HASH",
"AttributeName": "username"
}
],
"ItemCount": 81,
"CreationDateTime": 1458249331.208
}
}
可以看出,表的读取和写入容量单位均已设置为 10,000。
在负载测试进行时,我正在监视 beanstalk 服务的运行状况
,请求数确实平均每秒约 3K。我不明白为什么会超出吞吐量。该表还应每秒接收 3,000 个请求。
DynamoDB不会限制整个表的容量。从文档中:
与表关联的预置吞吐量也在分区之间平均分配,不会在分区之间共享预置吞吐量。
因此,如果您的读取容量为每秒10,000个,并且您的表有10个分区,那么每个分区分配的读取容量为每秒1000个。如果在负载测试中,您访问了同一分区中的键(工作负载分布不均),那么您将看到ProvisionedToverputExceededExceptions。您应该尝试均匀分布分区键空间,以便充分利用预配的吞吐量。
请在此处阅读有关此主题的更多信息。