2016-05-17 11 views
0

enter image description here私は毎秒3000リクエストでサービスをロードテストしています。各要求は、DynamoDBテーブルからデータをフェッチします。この表には、毎秒10,000読み取りのプロビジョニングされた読み取り容量があります。しかし、私は次の例外を取得しています:DynamoDB ProvisionedReadCapacityが超えました

com.amazonaws.services.dynamodbv2.model.ProvisionedThroughputExceededException: The level of configured provisioned throughput for the table was exceede d. Consider increasing your provisioning level with the UpdateTable API (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ProvisionedThroughputE xceededException; Request ID: KHOG5L1S83VU05CAOEJCCPAUFVVV4KQNSO5AEMVJF66Q9ASUAAJG)

次のように私のテーブルの記述があります。

$ 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に設定されています。

私は、負荷テストが進行中で、実際にリクエスト数が平均で約3K /秒でしたが、Beanstalkサービスのhealthを監視していました。私はなぜスループット能力を超えているのか分かりません。また、テーブルには毎秒3000件のリクエストが必要です。

+0

[cloudwatch metrics](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MonitoringDynamoDB.html#dynamodb-metrics)の表示内容は何ですか? –

+0

@ Michael-sqlbot投稿にクラウドウォッチメトリックを追加しました。消費量は約3000台で、これは私が期待していたものです。しかし、私はそれらの例外を取得しています。 – Nik

+0

awsのサポートに連絡することをお勧めします – Shibashis

答えて

1

DynamoDBはテーブル全体の容量を調整しません。ドキュメントから:

テーブルに関連付けられたプロビジョニングスループットもパーティション間でプロビジョニングされたスループット のない共有して、パーティション間で均等に に分割されます。

したがって、1秒あたり10,000の読み取り容量があり、テーブルに10個のパーティションがある場合、各パーティションには1秒あたり1000読み込みの読み取り容量が割り当てられます。負荷テストで、同じパーティション(作業負荷の分散が不均一)にあるキーを押すと、ProvisionedThroughputExceededExceptionsが表示されます。プロビジョニングされたスループットを最大限に活用できるように、パーティションのキースペースを均等に分散させてください。

続きを読むこのトピックについてもっと読むhere

+0

これは、明らかにプロビジョニングされた容量内にあるにもかかわらず、例外が表示される理由を説明しています。私はロード・ジェネレータからの各要求に対して実際に同じURLを使用しています。したがって、各要求は同じキーのレコードを取得しています。そのキーを処理するパーティションがすべてのトラフィックを取得しています。私は現在、負荷テスト中にキーを変更しようとします。 – Nik

関連する問題