【问题标题】:Is there a way of stopping Azure Storage PutBlock method from timing out?有没有办法阻止 Azure Storage PutBlock 方法超时?
【发布时间】:2015-04-09 03:07:50
【问题描述】:

我有一种方法可以将文件上传到 Azure 到我的存储帐户。我的方法很简单

blob = new CloudBlockBlob(new Uri(Uri));
var ms = new MemoryStream(block.Data);
blob.PutBlock(block.BlockId, ms, null)

但有时我的PutBlock 会抛出异常:

操作已超时

堆栈跟踪

在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd、IRetryPolicy 策略、OperationContext operationContext)\r\n at Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.PutBlock(字符串 blockId, Stream blockData, String contentMD5, AccessCondition accessCondition、BlobRequestOptions 选项、OperationContext 操作上下文)

内部异常堆栈跟踪

在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& 上下文)\r\n 在 System.Net.HttpWebRequest.GetRequestStream()\r\n
在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy 策略, OperationContext operationContext)"

这通常发生在我一次异步上传 40 个文件并且文件导致瓶颈时。我现在显然一次将其限制为 1 个文件。但我想知道为什么会发生这种情况,是否有办法阻止它,以便我知道它不会在互联网连接普遍缓慢的情况下再次发生?

【问题讨论】:

    标签: c# azure storage


    【解决方案1】:

    您可以尝试以下几种方法:

    • 减少并行上传的数量:您可以尝试通过减少并行上传的数量来表示逻辑处理器的数量(或者可能是该数量的一半)。因此,例如,如果您有 8 个核心处理器,那么您可以尝试并行上传 4-8 个文件。根据我的经验,并行上传更多文件实际上会减慢速度。据我了解,发生大量上下文切换的原因。
    • 减小块大小:您可以尝试减小块大小。
    • 增加请求超时时间:如果我没记错的话,web请求中默认的请求超时时间是100秒(https://msdn.microsoft.com/en-us/library/system.net.webrequest.timeout%28v=vs.110%29.aspx)。您可以通过增加它来尝试。这将处理来自客户端的超时。还有一个服务器端请求超时,默认情况下是 30 秒(有一些例外)。您可以在此处阅读有关服务器端超时的更多信息:https://msdn.microsoft.com/en-us/library/azure/dd179431.aspx如果我没记错的话,默认的请求超时时间是90秒。您可以尝试增加超时时间。您可以在PutBlock 方法的BlobRequestOptions 参数的ServerTimeout 属性中指定它。

    【讨论】:

    • 这些是一些优点。我已经将并行上传一次减少到 1 个,所以希望这可以减少它发生的机会。我也可以尝试减小当前每个块为 512 字节的块大小。你怎么知道默认超时是 90 秒?我试图为自己找出这个问题,但在 azure api 上的 msdn 文档旁边没有用
    • 更新了我的答案。 HTH。
    • 我只想在这里添加其他遇到此问题的人。从我一直在查看的内容来看,Azure API 无法增加默认请求超时,并且从我的堆栈跟踪的外观来看,这就是引发错误的地方。因此,我将尝试减少块大小和并行上传的数量。感谢您的帮助
    猜你喜欢
    • 2021-12-12
    • 2016-04-03
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多