2017-04-14 61 views
0

我正在C#中开发应用程序并使用Azure。我注意到,当我尝试加载大量斑点时,一些请求需要花费大约2分钟。通常下载时间是1-15秒。 奇怪的是,请求可能需要1-15秒或2分钟(它从来不是30秒,或1分钟等)。对我来说,看起来Azure具有某种节流或重试机制,但我不确定。2分钟延迟下载Azure blobs

什么导致2分钟延迟? 如何避免这种延迟?

CloudBlockBlob blob = this.GetBlobReference(key);  
using(var msGet = new MemoryStream()) 
{ 
    await this._ap.Do(() => 
    { 
     var downloadToStreamAsync = blob.DownloadToStreamAsync(msGet); 
     return downloadToStreamAsync; 
    }).ConfigureAwait(false); 
} 
+2

可以使用https://docs.microsoft.com/en-us/azure/storage/storage-performance-checklist#subheading16 https://docs.microsoft.com/en-us/azure/storage/storage-scalability-targets https://blogs.msdn.microsoft.com/mast/2014/08/02/how-to-monitor-for-storage-account-throttling/ – Lanorkin

+0

@Lanorkin感谢您的帮助链接+1 – burzhuy

+0

我从来没有见过这个。建议您使用azcopy工具尝试相同的下载并比较结果。这应该可以帮助您确定它是Azure限制还是可能与代码有关。 https://docs.microsoft.com/en-us/azure/storage/storage-use-azcopy – codingoutloud

回答

0

看起来像是一个Azure问题。 https://github.com/Azure/azure-webjobs-sdk-script/issues/298

目前,在功能应用很短的空闲超时,所以,如果他们没有得到请求5分钟,下一个请求会导致冷启动这需要更长的时间。我们正在考虑增加这种超时,这会使情况更不常见。

看起来像唯一的解决方案是保持服务器温暖。我认为,运行一项服务将会在3分钟内打电话给天蓝色的存储设备。要避免冷启动

+0

因此,要清楚的是,这与Azure存储无关。这是特定于Web应用程序(您没有提到使用,无论是在您的问题或在您的标签)。 –

+0

这仅仅是理论,我不确定100%。但它看起来相似,因为症状是相同的。 – burzhuy

+1

Azure函数(和Web应用程序)特定于应用程序服务。 Azure函数的5分钟超时是特定于Azure函数的。 –