"Storage account management operations" 和 ClientThrottlingError
"Storage account management operations" and ClientThrottlingError
根据 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 支持(正确的...)沟通后,他们可以告知我们以下信息:
The type of throttling you experienced is a partition throttling error. This type of error occurs when the client does too many requests against the same partition server. When such happens and the partition server gets overloaded, it does internal load balancing operations as part of the normal azure storage healing process.
When the partition being accessed suffers a load balancing operation (reassigning partitions to less loaded servers), the storage service returns 500 or 503 errors.
The limits I previously mentioned (the 800 reads for 5 minutes) are indeed for management operations and not for data ones. In your case, the GetBlob ones are data operations and are not covered by these hard limits. After analyzing the ingress/egress limit and also the transactions per second of your storage account, I verified that you also seem to be far away from hitting the threshold.
仅供记录和改进的可搜索性:在指标中,这些错误显示为 ClientOtherError
和 ClientThrottlingError
。
Which operations count as Storage account management operations?
列出的所有操作 here
都被视为存储帐户管理操作。本质上,您对管理存储帐户本身(而不是其中的数据)执行的操作被视为管理操作。
Does it matter whether we use BlobClient from the blob storage SDK, or
HttpClient from .NET?
没有。这些操作处理数据而不被视为管理操作的一部分。这些操作有单独的吞吐量限制。
How do we read blob properties and metadata, and download blobs to
(possibly) achieve 20.000 requests per second?
请参阅上一个问题的答案。
根据 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 支持(正确的...)沟通后,他们可以告知我们以下信息:
The type of throttling you experienced is a partition throttling error. This type of error occurs when the client does too many requests against the same partition server. When such happens and the partition server gets overloaded, it does internal load balancing operations as part of the normal azure storage healing process.
When the partition being accessed suffers a load balancing operation (reassigning partitions to less loaded servers), the storage service returns 500 or 503 errors.
The limits I previously mentioned (the 800 reads for 5 minutes) are indeed for management operations and not for data ones. In your case, the GetBlob ones are data operations and are not covered by these hard limits. After analyzing the ingress/egress limit and also the transactions per second of your storage account, I verified that you also seem to be far away from hitting the threshold.
仅供记录和改进的可搜索性:在指标中,这些错误显示为 ClientOtherError
和 ClientThrottlingError
。
Which operations count as Storage account management operations?
列出的所有操作 here
都被视为存储帐户管理操作。本质上,您对管理存储帐户本身(而不是其中的数据)执行的操作被视为管理操作。
Does it matter whether we use BlobClient from the blob storage SDK, or HttpClient from .NET?
没有。这些操作处理数据而不被视为管理操作的一部分。这些操作有单独的吞吐量限制。
How do we read blob properties and metadata, and download blobs to (possibly) achieve 20.000 requests per second?
请参阅上一个问题的答案。