gpt4 book ai didi

java - AWS DynamoDB Java BatchWriteItem 连接重置错误

转载 作者:行者123 更新时间:2023-11-29 09:09:57 25 4
gpt4 key购买 nike

com.amazonaws.AmazonClientException: Unable to execute HTTP request: Connection reset
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:324)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:164)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:985)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.batchWriteItem(AmazonDynamoDBClient.java:365)
.
.
.

在尝试运行以下 code sample 时捕获了上述异常.

BatchWriteItemResult result;
BatchWriteItemRequest batchWriteItemRequest = new BatchWriteItemRequest();
do {
System.out.println("Making the request.");
batchWriteItemRequest.withRequestItems(requestItems);
result = client.batchWriteItem(batchWriteItemRequest);

// Print consumed capacity units
for(Map.Entry<String, BatchWriteResponse> entry : result.getResponses().entrySet()) {
String tableName = entry.getKey();
Double consumedCapacityUnits = entry.getValue().getConsumedCapacityUnits();
System.out.println("Consumed capacity units for table " + tableName + ": " + consumedCapacityUnits);
}

// Check for unprocessed keys which could happen if you exceed provisioned throughput
System.out.println("Unprocessed Put and Delete requests: \n" + result.getUnprocessedItems());
requestItems = result.getUnprocessedItems();
} while (result.getUnprocessedItems().size() > 0);

我设置了 1 个表,配置了 8 个写入单元。

在我的 BatchWriteItemRequest 中,我有 9 个 PutRequestItems

第一次在 while 循环中时,处理了 9 个 PutRequestItem 中的 8 个。于是再次进入循环,尝试处理剩下的一个请求。

但是,代码会卡在result = client.batchWriteItem(batchWriteItemRequest); 大约 149 秒。之后,抛出上述异常。

似乎绕过这个的唯一方法是设置更高的写入配置单元。但是,while-do 循环难道不是一种处理超出规定写入单元的情况的方法吗?

最佳答案

适用于 Java 的 AWS 开发工具包的一个版本以您描述的方式破坏了重试行为。基本上,请求的输入流不会在两次尝试之间重置,因此每次重试都会立即失败。默认情况下,DynamoDB 使用指数退避算法进行 10 次重试,导致您看到的非常长的延迟。更新您的 SDK 以解决此问题:

http://aws.amazon.com/sdkforjava/

关于java - AWS DynamoDB Java BatchWriteItem 连接重置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com