我正在使用AWS .Net Core SDK与Amazon DynamoDB连接,除了重复和随机地获得超时(每个请求大约30秒)之外,其他所有功能都正常。
我使用日志记录,并在获取扫描操作结果之后将问题追溯到GetRemainingAsync方法。
public async Task<IList<T>> GetByPropertyAsync(List<KeyValuePair<string, object>> properties)
{
var conditions = new List<ScanCondition>();
foreach (var property in properties)
{
conditions.Add(new ScanCondition(property.Key, ScanOperator.Equal, property.Value));
}
var response = base.ScanAsync<T>(conditions, _config);
return response.GetRemainingAsync().Result;
}
在记录和发送多个请求(一个接一个)时,行
response.GetRemainingAsync().Result
挂起30秒左右,这经常发生。可能是与线程相关的问题,我尝试使用以下命令在单独的线程中运行此行:
Task.Run(() => response.GetRemainingAsync()).Result;
但这也不起作用。
最佳答案
问题出在response.GetRemainingAsync()
导致ProvisionedThroughputExceededException
会触发重试,直到发生超时(听起来像挂起)。
解决方案是增加ProvisionedThroughput限制或切换到按需模型,或者随后更新重试策略dynamodb客户端。
关于c# - DynamoDb .AsyncSearch <T> .GetRemainingAsync随机挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55230449/