在Azure中下载blob时出现间歇性错误

时间:2012-03-30 22:05:50

标签: c# azure azure-storage azure-storage-blobs

在我在Azure上运行的网络应用程序中,我似乎在Windows事件日志中大约每10分钟就会在网站负载过重时出现这些错误

The server encountered an unknown failure: The operation has timed out
Stack Trace:
at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
at Microsoft.WindowsAzure.StorageClient.RequestWithRetry.RequestWithRetrySyncImpl[TResult](ShouldRetry retryOracle, SynchronousTask`1 syncTask)
at Microsoft.WindowsAzure.StorageClient.CloudBlob.DownloadByteArray(BlobRequestOptions options)

但它不是所有的时间,只是时不时地,我真的不知道如何诊断它,甚至不知道为什么会发生这种情况。

我可以为您提供一些示例代码吗?你需要看什么?不幸的是,这个应用程序是在NDA下,所以我不能谈论细节或给予很多。

我已经在MS论坛上发布了这个,我会分享我在任何网站上得到的所有答案。这是一个真正的生产问题,非常感谢这里的任何帮助。

1 个答案:

答案 0 :(得分:0)

您提到在重负载下会出现这些错误。有几个因素可能会导致存储间歇性错误:

  • 网络带宽。你得到约。每个核心100Mbps。你能不能计算和存储之间的网络带宽?我猜你有多个角色实例,这会降低遇到这个特定问题的可能性。
  • 每项吞吐量和交易率。每个blob都有效地存储在自己的分区中,目标是60MB / s。你有多个相同对象的读者吗?如果是这样,由于过多的读者请求相同的对象,无论是在吞吐量还是在事务计数中(每个对象的目标是500个事务/秒),您可能会超时。
  • 每帐户交易率。存储帐户的总体扩展目标为每秒5,000个事务。同时访问足够的blob,您可能会超出此限制。

有关可伸缩性目标的更多详细信息here