1

現在、DynamoDB を使用して BatchWriteItem リクエストを呼び出すときに問題が発生しています。次のエラーが表示されます

「データを DB に保存できません。テーブルに設定されたプロビジョニング済みスループットのレベルを超えました。UpdateTable API を使用してプロビジョニング レベルを上げることを検討してください」

構成:

ThroughPut: 読み取り = 5 ; 書き込み = 5;

これが私のシナリオです: 同じテーブルに対して 2 セットのデータ書き込み要求を次々に実行する必要があります - 集約データ (932KB: 約 15 チャンクである 63KB のチャンクに分割) - 非集約データ (940 KB:約 15 チャンクである 63KB のチャンクに分割)

書き込みを行う前に、ハッシュ キーと範囲キーの値に基づいて dynamo-db テーブル内のすべてのアイテムを削除します (集約データの場合: 16 個のアイテムが削除されます)。

以下はコードです:

public void PutItems(string tableName, string id, string message, bool aggregated)
    {
         if (aggregated)
             id = "a_" + id;
         else
             id = "r_" + id;
        List<WriteRequest> writeRequests = new List<WriteRequest>();
        List<WriteRequest> DeleteWriteRequest = new List<WriteRequest>();
        var itemsToDelete = GetItemsToDelete(tableName, id);
        if (itemsToDelete.Count > 0)
        {
            foreach (Tuple<string, int> item in itemsToDelete)
            {

                DeleteRequest deleteRequest = new DeleteRequest
                {
                    Key = new Key
                    {
                        HashKeyElement = new AttributeValue { S = item.Item1 },
                        RangeKeyElement = new AttributeValue { N = item.Item2.ToString() }
                    }
                };
                WriteRequest deleteReq = new WriteRequest();
                deleteReq.DeleteRequest = deleteRequest;
                DeleteWriteRequest.Add(deleteReq);
            }
            logger.Info(this.GetType().ToString(), string.Format(".....Deleting Old Data..........."));
            foreach (IEnumerable<WriteRequest> ls in LinqExtensions.Partition(DeleteWriteRequest, SplitLevel))
            {
                BatchWriteItemRequest delWriteRequest = new BatchWriteItemRequest();
                delWriteRequest.WithRequestItems(new KeyValuePair<string, List<WriteRequest>>(tableName, ls.ToList()));

                CallBatchWriteTillCompletion(delWriteRequest);
            }
            logger.Info(this.GetType().ToString(), string.Format(".....Delete Complete!..........")); 
        }

        int MaxLength = 64512; //64KB = 65536 Bytes ; 60KB = 61440 Bytes
        logger.Info(this.GetType().ToString(), string.Format("Message Size : {0}", message.Length)); 
        var str = SplitToChunks(message, MaxLength).ToList();
        for (int i = 0; i < str.Count; i++)
        {



            PutRequest putRequest = new PutRequest
            {
                Item = new Dictionary<string, AttributeValue>()
                    {
                        {"Received", new AttributeValue {S = id}},
                        {"SequenceNum" , new AttributeValue {N = i.ToString()}},
                        {"Message", new AttributeValue {S = str[i]}}
                    }
            };
            WriteRequest request = new WriteRequest();
            request.PutRequest = putRequest;
            writeRequests.Add(request);
        }

        logger.Info(this.GetType().ToString(), string.Format(".....Writing Data..........."));
        foreach (IEnumerable<WriteRequest> ls in LinqExtensions.Partition(writeRequests, SplitLevel))
        {
                System.Threading.Thread.Sleep(1000);
                BatchWriteItemRequest writeRequest = new BatchWriteItemRequest();
                writeRequest.WithRequestItems(new KeyValuePair<string, List<WriteRequest>>(tableName, ls.ToList()));
                CallBatchWriteTillCompletion(writeRequest);


        }
        logger.Info(this.GetType().ToString(), string.Format(".....Write Complete!.........."));
    }


    private void CallBatchWriteTillCompletion(BatchWriteItemRequest request)
    {
        BatchWriteItemResponse response;

        int callCount = 0;
        do
        {
            if (callCount > 0)
            {
                System.Threading.Thread.Sleep(1000);
            }
            logger.Info(this.GetType().ToString(), string.Format("Making Request"));
            response = Instance.Client.BatchWriteItem(request);
            callCount++;

            // Check the response.
            var result = response.BatchWriteItemResult;
            var responses = result.Responses;
            var unprocessed = result.UnprocessedItems;

            logger.Info(this.GetType().ToString(), string.Format("Response"));
            foreach (var resp in responses)
            {

                logger.Info(this.GetType().ToString(), string.Format("{0} - {1}", resp.Key, resp.Value.ConsumedCapacityUnits));
            }

            logger.Info(this.GetType().ToString(), string.Format("Unprocessed"));
            foreach (var unp in unprocessed)
            {

                logger.Info(this.GetType().ToString(), string.Format("{0} - {1}", unp.Key, unp.Value.Count));

            }

            // For the next iteration, the request will have unprocessed items.
            request.RequestItems = unprocessed;

        } while (response.BatchWriteItemResult.UnprocessedItems.Count > 0);

        logger.Info(this.GetType().ToString(), string.Format("Total # of batch write API calls made: {0}", callCount));

    }



    //This method is use to split a string message of smaller chunks of 64KB.
    private static IEnumerable<String> SplitToChunks(String str, int maxLength)
    {
            for (int index = 0; index < str.Length; index += maxLength)
            {
                yield return str.Substring(index, Math.Min(maxLength, str.Length - index));
            }          
    }

静的クラス LinqExtensions {

    public static IEnumerable<IEnumerable<T>> Partition<T>(this IEnumerable<T> source, int size)
    {
        T[] array = null;
        int count = 0;
        foreach (T item in source)
        {
            if (array == null)
            {
                array = new T[size];
            }
            array[count] = item;
            count++;
            if (count == size)
            {
                yield return new ReadOnlyCollection<T>(array);
                array = null;
                count = 0;
            }
        }
        if (array != null)
        {
            Array.Resize(ref array, count);
            yield return new ReadOnlyCollection<T>(array);
        }
    }

}

ここで私が間違っていることを教えてください。スループットが決して超えないように、複数の場所で 1 秒の遅延を追加しました。また、ConsumedCapacityUnits を含むログ付きのテキスト ファイルを添付しました。

2013-03-06 21:20:21.6093 INFO     
2013-03-06 21:20:21.7031 INFO     .........Writing Aggregated Messages to DynamoDB ...
2013-03-06 21:20:21.7343 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:20:22.2500 INFO     Working mode: MASTER.
2013-03-06 21:20:22.3750 INFO     Heartbeat message '3/6/2013 9:20:22 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:20:22.9062 INFO     .....Deleting Old Data...........
2013-03-06 21:20:22.9531 INFO     Making Request
2013-03-06 21:20:23.1250 INFO     Response
2013-03-06 21:20:23.1562 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 320
2013-03-06 21:20:23.2031 INFO     Unprocessed
2013-03-06 21:20:23.2500 INFO     Total # of batch write API calls made: 1
2013-03-06 21:20:23.2812 INFO     Making Request
2013-03-06 21:20:23.4218 INFO     Response
2013-03-06 21:20:23.5468 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 320
2013-03-06 21:20:23.5937 INFO     Unprocessed
2013-03-06 21:20:23.6406 INFO     Total # of batch write API calls made: 1
2013-03-06 21:20:23.6718 INFO     Making Request
2013-03-06 21:20:26.1406 INFO     Response
2013-03-06 21:20:26.2031 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 320
2013-03-06 21:20:26.2500 INFO     Unprocessed
2013-03-06 21:20:26.2968 INFO     Total # of batch write API calls made: 1
2013-03-06 21:20:26.3593 INFO     Making Request
2013-03-06 21:20:28.6875 INFO     Response
2013-03-06 21:20:28.7187 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 54
2013-03-06 21:20:28.7500 INFO     Unprocessed
2013-03-06 21:20:28.7968 INFO     Total # of batch write API calls made: 1
2013-03-06 21:20:28.8750 INFO     .....Delete Complete!..........
2013-03-06 21:20:28.9218 INFO     Message Size : 1022580
2013-03-06 21:20:28.9687 INFO     .....Writing Data...........
2013-03-06 21:20:30.0000 INFO     Making Request
2013-03-06 21:20:33.2812 INFO     Response
2013-03-06 21:20:33.3125 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 128
2013-03-06 21:20:33.3437 INFO     Unprocessed
2013-03-06 21:20:33.3906 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 3
2013-03-06 21:20:34.4218 INFO     Making Request
2013-03-06 21:20:36.2343 INFO     Response
2013-03-06 21:20:36.2656 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 128
2013-03-06 21:20:36.2968 INFO     Unprocessed
2013-03-06 21:20:36.3281 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 1
2013-03-06 21:20:36.6093 INFO     
2013-03-06 21:20:36.6406 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:20:37.0156 INFO     Working mode: MASTER.
2013-03-06 21:20:37.0781 INFO     Heartbeat message '3/6/2013 9:20:37 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:20:37.3750 INFO     Making Request
2013-03-06 21:20:38.0781 INFO     Response
2013-03-06 21:20:38.1093 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:20:38.1406 INFO     Unprocessed
2013-03-06 21:20:38.1718 INFO     Total # of batch write API calls made: 3
2013-03-06 21:20:39.2187 INFO     Making Request
2013-03-06 21:20:42.2812 INFO     Response
2013-03-06 21:20:42.3125 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 128
2013-03-06 21:20:42.3437 INFO     Unprocessed
2013-03-06 21:20:42.3906 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 3
2013-03-06 21:20:43.4218 INFO     Making Request
2013-03-06 21:20:45.2187 INFO     Response
2013-03-06 21:20:45.2500 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 128
2013-03-06 21:20:45.2968 INFO     Unprocessed
2013-03-06 21:20:45.3281 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 1
2013-03-06 21:20:46.3593 INFO     Making Request
2013-03-06 21:20:47.0156 INFO     Response
2013-03-06 21:20:47.0625 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:20:47.0937 INFO     Unprocessed
2013-03-06 21:20:47.1250 INFO     Total # of batch write API calls made: 3
2013-03-06 21:20:48.1718 INFO     Making Request
2013-03-06 21:20:51.2968 INFO     Response
2013-03-06 21:20:51.3437 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 128
2013-03-06 21:20:51.3906 INFO     Unprocessed
2013-03-06 21:20:51.4218 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 3
2013-03-06 21:20:51.6093 INFO     
2013-03-06 21:20:51.6406 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:20:52.0000 INFO     Working mode: MASTER.
2013-03-06 21:20:52.0781 INFO     Heartbeat message '3/6/2013 9:20:52 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:20:52.4531 INFO     Making Request
2013-03-06 21:20:54.2656 INFO     Response
2013-03-06 21:20:54.3125 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 128
2013-03-06 21:20:54.3437 INFO     Unprocessed
2013-03-06 21:20:54.3750 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 1
2013-03-06 21:20:55.6718 INFO     Making Request
2013-03-06 21:20:56.3281 INFO     Response
2013-03-06 21:20:56.3750 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:20:56.4375 INFO     Unprocessed
2013-03-06 21:20:56.5312 INFO     Total # of batch write API calls made: 3
2013-03-06 21:20:57.5937 INFO     Making Request
2013-03-06 21:20:58.1875 INFO     Response
2013-03-06 21:20:58.2343 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 54
2013-03-06 21:20:58.3281 INFO     Unprocessed
2013-03-06 21:20:58.5625 INFO     Total # of batch write API calls made: 1
2013-03-06 21:20:58.5937 INFO     .....Write Complete!..........
2013-03-06 21:20:58.6875 INFO     .........Writing Complete! ...
2013-03-06 21:20:58.7187 INFO     .........Writing Raw Messages to DynamoDB ...
2013-03-06 21:21:00.8437 INFO     .....Deleting Old Data...........
2013-03-06 21:21:00.8906 INFO     Making Request
2013-03-06 21:21:06.0000 INFO     New Message Received
2013-03-06 21:21:06.6093 INFO     
2013-03-06 21:21:06.6562 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:21:07.0468 INFO     Working mode: MASTER.
2013-03-06 21:21:07.1250 INFO     Heartbeat message '3/6/2013 9:21:07 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:21:08.2343 INFO     Response
2013-03-06 21:21:08.2812 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 39
2013-03-06 21:21:08.3281 INFO     Unprocessed
2013-03-06 21:21:08.4062 INFO     Total # of batch write API calls made: 1
2013-03-06 21:21:08.4843 INFO     .....Delete Complete!..........
2013-03-06 21:21:08.5156 INFO     Message Size : 1006556
2013-03-06 21:21:08.5625 INFO     .....Writing Data...........
2013-03-06 21:21:09.6093 INFO     Making Request
2013-03-06 21:21:15.7187 INFO     Response
2013-03-06 21:21:15.7656 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:21:15.7968 INFO     Unprocessed
2013-03-06 21:21:15.8437 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 4
2013-03-06 21:21:16.8750 INFO     Making Request
2013-03-06 21:21:21.6093 INFO     
2013-03-06 21:21:21.6562 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:21:23.4687 INFO     Working mode: MASTER.
2013-03-06 21:21:24.1406 INFO     Heartbeat message '3/6/2013 9:21:23 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:21:27.3593 INFO     Response
2013-03-06 21:21:27.4062 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:21:27.4531 INFO     Unprocessed
2013-03-06 21:21:27.5000 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 3
2013-03-06 21:21:28.5312 INFO     Making Request
2013-03-06 21:21:36.6093 INFO     
2013-03-06 21:21:36.9687 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:21:38.1718 INFO     Working mode: MASTER.
2013-03-06 21:21:38.2343 INFO     Heartbeat message '3/6/2013 9:21:38 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:21:40.2031 INFO     Response
2013-03-06 21:21:40.2500 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:21:40.3281 INFO     Unprocessed
2013-03-06 21:21:40.3593 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 2
2013-03-06 21:21:41.3906 INFO     Making Request
2013-03-06 21:21:51.6093 INFO     
2013-03-06 21:21:51.7500 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:21:52.1718 INFO     Working mode: MASTER.
2013-03-06 21:21:52.2500 INFO     Heartbeat message '3/6/2013 9:21:52 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:21:54.0937 INFO     Response
2013-03-06 21:21:54.1562 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:21:54.1875 INFO     Unprocessed
2013-03-06 21:21:54.2343 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 1
2013-03-06 21:21:55.2812 INFO     Making Request
2013-03-06 21:22:06.2031 INFO     New Message Received
2013-03-06 21:22:06.6093 INFO     
2013-03-06 21:22:06.6406 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:22:07.0312 INFO     Working mode: MASTER.
2013-03-06 21:22:07.5781 INFO     Response
2013-03-06 21:22:07.6406 INFO     Heartbeat message '3/6/2013 9:22:07 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:22:07.7812 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:22:07.8437 INFO     Unprocessed
2013-03-06 21:22:07.9375 INFO     Total # of batch write API calls made: 5
2013-03-06 21:22:08.9687 INFO     Making Request
2013-03-06 21:22:18.0156 INFO     Response
2013-03-06 21:22:18.0781 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:22:18.1250 INFO     Unprocessed
2013-03-06 21:22:18.1562 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 4
2013-03-06 21:22:19.2031 INFO     Making Request
2013-03-06 21:22:21.6093 INFO     
2013-03-06 21:22:21.6875 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:22:21.7031 INFO     Response
2013-03-06 21:22:21.7656 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:22:21.8281 INFO     Unprocessed
2013-03-06 21:22:21.8750 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 3
2013-03-06 21:22:22.0937 INFO     Working mode: MASTER.
2013-03-06 21:22:22.1875 INFO     Heartbeat message '3/6/2013 9:22:22 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:22:22.9375 INFO     Making Request
2013-03-06 21:22:34.9687 INFO     Response
2013-03-06 21:22:35.0156 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:22:35.0468 INFO     Unprocessed
2013-03-06 21:22:35.0781 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 2
2013-03-06 21:22:36.1093 INFO     Making Request
2013-03-06 21:22:36.6093 INFO     
2013-03-06 21:22:36.7656 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:22:38.2968 INFO     Working mode: MASTER.
2013-03-06 21:22:38.5468 INFO     Heartbeat message '3/6/2013 9:22:38 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:22:48.7968 INFO     Response
2013-03-06 21:22:48.8750 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:22:48.9062 INFO     Unprocessed
2013-03-06 21:22:48.9375 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 1
2013-03-06 21:22:50.0000 INFO     Making Request
2013-03-06 21:22:51.6093 INFO     
2013-03-06 21:22:51.8281 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:22:52.8125 INFO     Working mode: MASTER.
2013-03-06 21:22:52.8906 INFO     Heartbeat message '3/6/2013 9:22:52 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:23:02.2968 INFO     Response
2013-03-06 21:23:02.3281 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:23:02.3593 INFO     Unprocessed
2013-03-06 21:23:02.3906 INFO     Total # of batch write API calls made: 5
2013-03-06 21:23:03.4375 INFO     Making Request
2013-03-06 21:23:06.6093 INFO     
2013-03-06 21:23:06.7812 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:23:07.5000 INFO     New Message Received
2013-03-06 21:23:08.8593 INFO     Working mode: MASTER.
2013-03-06 21:23:09.3281 INFO     Heartbeat message '3/6/2013 9:23:09 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:23:15.3906 INFO     Response
2013-03-06 21:23:15.4375 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:23:15.4843 INFO     Unprocessed
2013-03-06 21:23:15.5312 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 4
2013-03-06 21:23:16.5625 INFO     Making Request
2013-03-06 21:23:21.6093 INFO     
2013-03-06 21:23:21.8593 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:23:23.7031 INFO     Working mode: MASTER.
2013-03-06 21:23:24.0468 INFO     Heartbeat message '3/6/2013 9:23:23 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:23:28.7812 INFO     Response
2013-03-06 21:23:28.8125 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 64
2013-03-06 21:23:28.8750 INFO     Unprocessed
2013-03-06 21:23:29.1718 INFO     Key: TrafficConditionsMessages_dev - Unprocessed Value Count: 3
2013-03-06 21:23:30.4375 INFO     Making Request
2013-03-06 21:23:31.6093 INFO     Run task Called......
2013-03-06 21:23:31.9375 INFO     Processing Read data Method
2013-03-06 21:23:32.7187 INFO     Saving data to DB...
2013-03-06 21:23:33.0156 INFO     .........Writing Aggregated Messages to DynamoDB ...
2013-03-06 21:23:36.8125 INFO     
2013-03-06 21:23:37.0156 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:23:37.4531 INFO     .....Deleting Old Data...........
2013-03-06 21:23:37.7500 INFO     Making Request
2013-03-06 21:23:38.5156 INFO     Working mode: MASTER.
2013-03-06 21:23:38.8593 INFO     Heartbeat message '3/6/2013 9:23:38 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:23:41.6875 INFO     Response
2013-03-06 21:23:41.9531 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 320
2013-03-06 21:23:42.2500 INFO     Unprocessed
2013-03-06 21:23:42.3593 INFO     Total # of batch write API calls made: 1
2013-03-06 21:23:42.4218 INFO     Making Request
2013-03-06 21:23:50.5468 ERROR    Unable to save data to DB. The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API
2013-03-06 21:23:50.5781 INFO     .....Save to Database Complete!..... 
2013-03-06 21:23:50.7812 INFO     Run task Complete......
2013-03-06 21:23:51.6093 INFO     
2013-03-06 21:23:51.6406 INFO     Heartbeat event fired. Processing heartbeat ...
2013-03-06 21:23:53.1718 INFO     Working mode: MASTER.
2013-03-06 21:23:53.4531 INFO     Heartbeat message '3/6/2013 9:23:53 PM|OAK-VENUGOPALP' written to SQS queue 'HeartbeatDataReceiver_dev'.
2013-03-06 21:23:53.6093 ERROR    Unable to save data to DB. The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API
2013-03-06 21:23:53.6562 INFO     .....Save to Database Complete!..... 
2013-03-06 21:23:53.8281 INFO     Run task Complete......
4

1 に答える 1

1

この数値は、(大まかに) 1 秒あたりの KB に変換されます。 ThroughPut : Write = 5;

63KB の項目を書き込もうとしている場合は、それを書き込んでから、約 13 秒待ってから再度書き込もうとする必要があります。1 秒あたり 5 KB をプロビジョニングし、1 回のバーストで 63 KB を使用しました。次の 13 秒間で、テーブルへの書き込み要求はスロットリングされる可能性があります。

タイムスタンプから判断すると、クライアントは見えない状態で ProvisionedThroughputExceeded エラーを処理し、再試行しています。たとえば、ここでは、リクエスト中に 10 秒が経過したことがわかります。

2013-03-06 21:22:08.9687 INFO     Making Request
2013-03-06 21:22:18.0156 INFO     Response

最終的に、一連の小さなリクエストの後に大きなリクエストがテーブルにヒットしました。

2013-03-06 21:23:41.9531 INFO     Key: TrafficConditionsMessages_dev - Consumed Capacity Units: 320

次のリクエストに時間がかかりすぎたため、クライアントはエラーを表示する時間だと判断しました。

2013-03-06 21:23:42.4218 INFO     Making Request
2013-03-06 21:23:50.5468 ERROR    Unable to save data to DB. The ...

解決策は、プロビジョニングされたスループットを上げるか、返された ConsumedCapacity に基づいてより長くスリープするか、または書き込むデータを減らすことです。

于 2013-03-08T23:57:13.447 に答える