Amazon dynamodb 已超出发电机配置容量
我正在对每秒3000个请求的服务进行负载测试。每个请求都从DynamoDB表中获取数据。该表具有每秒10000次读取的已设置读取容量。但是,我得到以下例外情况:Amazon dynamodb 已超出发电机配置容量,amazon-dynamodb,amazon-elastic-beanstalk,throughput,Amazon Dynamodb,Amazon Elastic Beanstalk,Throughput,我正在对每秒3000个请求的服务进行负载测试。每个请求都从DynamoDB表中获取数据。该表具有每秒10000次读取的已设置读取容量。但是,我得到以下例外情况: com.amazonaws.services.dynamodbv2.model.provisionedthroughputeExceedexception:表配置的已配置吞吐量级别已超过 D考虑使用可更新的API增加您的配置级别(Service:AdvMaMadioDbv2;状态代码:400;错误代码:提供代码) ExceedeExce
com.amazonaws.services.dynamodbv2.model.provisionedthroughputeExceedexception:表配置的已配置吞吐量级别已超过
D考虑使用可更新的API增加您的配置级别(Service:AdvMaMadioDbv2;状态代码:400;错误代码:提供代码)
ExceedeException;请求ID:KHOG5L1S83VU05CAOEJCPAUFV4KQNSO5AEMVJF66Q9ASUAJG)
我的表格说明如下
$ 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
}
}
可以看出,表的读写容量单位都设置为10000
在进行负载测试时,我正在监视beanstalk服务的
运行状况
,请求数实际上平均约为每秒3K。我不明白为什么会超过吞吐量。该表还应每秒收到3000个请求。DynamoDB不会限制整个表的容量。从文件中:
与表关联的已配置吞吐量也被划分
在分区之间均匀分布,不共享已配置的吞吐量
跨分区
因此,如果您有每秒10000次的读取容量,并且您的表有10个分区,那么每个分区将分配每秒1000次读取的读取容量。如果在负载测试中,您在同一分区中点击了关键点(工作负载的不均匀分布),那么您将看到provisionedthroughputedExcepedDexceptions。您应该尝试均匀地分配分区密钥空间,以便最大限度地利用已配置的吞吐量
阅读有关此主题的更多信息。该节目是什么?@Michael sqlbot我已在帖子中添加了cloudwatch指标。它显示消耗的容量约为3000台,这是我所期望的。然而,我得到了这些例外。我建议联系awssupport@Michael-sqlbot@Shibashis:您是否知道有什么方法可以限制
AmazonDynamodbClient
,使其不超过配置的容量?我检查了ClientConfiguration
,但没有找到这样做的方法。没有这样做的方法,因为可能有多个客户端都不知道对方的请求。解决方法是捕捉错误,然后。。。你对自己达到的极限有什么解释吗?将其设置为5000是否会将您限制在1500,还是您仍然可以获得3000?将其设置为2000怎么样?这就解释了为什么我会看到异常,尽管我显然在配置的容量内。对于来自load Generator的每个请求,我确实使用了相同的URL。因此,每个请求都是为同一个密钥提取记录。处理该密钥的分区正在获取所有流量。现在,我将尝试在负载测试期间更改键。