我正在使用C#开发应用程序并使用Azure。我注意到,当我尝试加载大量blob时,一些请求需要大约2分钟。通常下载时间为1-15秒。 奇怪的是,请求可能需要1-15秒或2分钟(从不30秒,或1分钟等)。对我来说,Azure看起来有某种限制或重试机制,但我不确定。
导致2分钟延误的原因是什么? 如何避免这种延误?
CloudBlockBlob blob = this.GetBlobReference(key);
using(var msGet = new MemoryStream())
{
await this._ap.Do(() =>
{
var downloadToStreamAsync = blob.DownloadToStreamAsync(msGet);
return downloadToStreamAsync;
}).ConfigureAwait(false);
}
答案 0 :(得分:0)
看起来这是一个Azure问题。 https://github.com/Azure/azure-webjobs-sdk-script/issues/298
目前,功能应用程序存在短暂的空闲超时,因此如果它们没有获得5分钟的请求,则下一个请求会导致冷启动,这需要更长的时间。我们正在考虑增加这种超时,这将使情况变得不那么常见。
看起来唯一的解决方案就是让服务器保持温暖。我认为运行一个服务将是3分钟内对azure存储进行1次调用将是很有意义的。避免冷启动