【发布时间】:2019-08-29 11:51:30
【问题描述】:
根据Storage account scale limits,Azure 中的每个存储帐户每秒可以处理 20.000 个请求。
但也有Storage resource provider scale limits 将存储帐户管理操作(读取)限制为每 5 分钟 800 个请求。
我们似乎已经达到了后者的限制,我们想知道什么样的操作算作存储帐户管理操作。今天早上,我们的生产系统中有几分钟的间歇性 503 响应,在 5 分钟内进行了 2600 次 GetBlob 操作。
- 哪些操作算作存储帐户管理操作?
- 我们使用 Blob 存储 SDK 中的 BlobClient 还是 .NET 中的 HttpClient 是否重要?
- 我们如何读取 blob 属性和元数据,并将 blob 下载到(可能)达到每秒 20.000 个请求?
- 对于在负载没有那么高的情况下可能导致节流的任何其他想法?
更新:
在与 Microsoft 支持人员(适当的...)沟通后,他们可以通知我们以下内容:
您遇到的限制类型是分区限制错误。当客户端对同一分区服务器执行过多请求时,会发生此类错误。当发生这种情况并且分区服务器过载时,它会在正常的 Azure 存储修复过程中执行内部负载平衡操作。
当正在访问的分区发生负载平衡操作(将分区重新分配给负载较小的服务器)时,存储服务会返回 500 或 503 错误。
我之前提到的限制(800 次读取 5 分钟)确实是针对管理操作而不是针对数据操作。在您的情况下, GetBlob 是数据操作,不受这些硬限制。在分析了您的存储帐户的入口/出口限制以及每秒事务数之后,我验证您似乎也距离达到阈值很远。
仅用于记录和改进的可搜索性:在 Metrics 中,这些错误显示为 ClientOtherError 和 ClientThrottlingError。
【问题讨论】:
标签: azure azure-resource-manager azure-blob-storage