Amazon dynamodb 已超出发电机配置容量

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

我正在对每秒3000个请求的服务进行负载测试。每个请求都从DynamoDB表中获取数据。该表具有每秒10000次读取的已设置读取容量。但是,我得到以下例外情况:

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。因此,每个请求都是为同一个密钥提取记录。处理该密钥的分区正在获取所有流量。现在,我将尝试在负载测试期间更改键。