Поделиться через


Узнайте, как Azure Resource Manager регулирует запросы

В данной статье описывается, как Azure Resource Manager регулирует запросы. В нем показано, как отслеживать количество оставшихся запросов, прежде чем достичь предела, и как реагировать при достижении предела.

Алгоритм регионального ограничения пропускной способности и ведра токенов.

Корпорация Майкрософт осуществила перенос подписок Azure на обновленную архитектуру ограничения в 2024 году. Теперь ограничения пропускной способности применяются для каждого региона, а не для каждого экземпляра Azure Resource Manager. Эта новая архитектура использует алгоритм контейнера маркеров для управления регулированием API.

Контейнер маркеров представляет максимальное количество запросов, которые можно отправлять для каждой секунды. При достижении максимального количества запросов скорость повторного заполнения определяет, как быстро маркеры становятся доступными в контейнере.

Эти обновленные ограничения упрощают обновление квоты и управление ими.

Обновленные ограничения:

Область Операции Размер контейнера Частота повторного заполнения в секунду
Подписка Читает 250 двадцать пять
Подписка Удаляет 200 10
Подписка Пишет 200 10
Клиент Читает 250 двадцать пять
Клиент Удаляет 200 10
Клиент Пишет 200 10

Ограничения подписки применяются для каждой подписки, для каждого субъекта-службы и типа операции. Существуют также глобальные ограничения подписки, эквивалентные 15 раз отдельным ограничениям субъекта-службы для каждого типа операции. Глобальные ограничения применяются ко всем субъектам-службам. Запросы регулируются, если превышены глобальные ограничения, субъект-служба или конкретный клиент.

Ограничения могут быть меньше для бесплатных или пробных клиентов.

Например, предположим, что размер контейнера составляет 250 маркеров для запросов на чтение и скорость заполнения 25 токенов в секунду. При отправке 250 запросов на чтение в секунду контейнер пуст и ваши запросы регулируются. Каждую секунду 25 маркеров становятся доступными, пока контейнер не достигнет максимальной емкости 250 маркеров. Вы можете использовать маркеры по мере их доступности.

Чтение метрик с помощью */providers/microsoft.insights/metrics API значительно влияет на общий трафик Azure Resource Manager и является распространенной причиной событий регулирования подписки. Если этот API используется в значительной getBatch степени, рекомендуется переключиться на API. Вы можете запрашивать несколько ресурсов в одном запросе REST, что повышает производительность и снижает регулирование. Дополнительные сведения о преобразовании операций см. в статье "Как перейти из API метрик в API getBatch".

Эти ограничения и архитектура также будут применяться ко всем суверенным облакам к концу 2026 года.

Как просмотреть ограниченные запросы?

Чтобы просмотреть регулируемые запросы и другие метрики Resource Manager, ознакомьтесь с метриками Azure Resource Manager.

Почему регулирование выполняется для каждого региона, а не для каждого экземпляра?

Так как разные регионы имеют другое количество экземпляров Resource Manager, регулирование для каждого экземпляра приводит к несогласованному регулированию производительности. Регулирование в каждом регионе обеспечивает согласованность регулирования и прогнозируемость.

Как обновленный интерфейс регулирования влияет на мои ограничения?

Вы можете отправлять дополнительные запросы. Увеличение запросов на запись в 30 раз. Увеличение числа запросов на удаление в 2,4 раза. Число запросов на чтение увеличивается на 7,5 раза.

Ограничение фоновых заданий

Фоновые задания в Azure Resource Manager (ARM) — это автоматические задачи, которые выполняются за кулисами для поддержки таких операций, как развертывание ресурсов, диагностика и обслуживание системы. Эти задания важны для обработки запросов пользователей и обеспечения функциональности службы. Для обеспечения стабильности и надежности платформы ARM использует ограничение фоновых заданий для управления нагрузкой от этих задач.

Вы можете определить, когда происходит ограничение скорости выполнения фоновых заданий, при получении следующего сообщения об ошибке:

The request for subscription '{0}' could not be processed due to an excessive volume of traffic. Please try again later.

Клиенты могут столкнуться с ограничением из-за чрезмерных фоновых заданий, которые могут быть вызваны высокочастотными операциями или деятельностью на уровне всей системы. Хотя у клиентов нет прямого контроля над созданием или выполнением этих заданий, важно осведомленность о потенциальном регулировании.

Регулирование для национальных облаков

Запросы регулируются на двух уровнях. Azure Resource Manager позволяет регулировать запросы для подписки и для клиента. Если запрос не превышает ограничения для подписки и для клиента, Resource Manager отправит запрос поставщику ресурсов. Поставщик ресурсов применяет ограничения с учетом своих задач.

Запросы изначально регулируются на идентификатор субъекта и на экземпляр Azure Resource Manager в регионе пользователя, отправляющего запрос. Запросы к экземпляру Azure Resource Manager в регионе также ограничиваются по идентификатору пользователя и в течение часа. Когда запрос пересылается поставщику ресурсов, запросы регулируются в каждом регионе ресурса, а не на экземпляр Azure Resource Manager в регионе пользователя.

Замечание

Ограничения поставщика ресурсов могут отличаться от ограничений экземпляра Azure Resource Manager в регионе пользователя.

На изображении ниже показано, как работает регулирование по мере того, как запрос проходит путь от пользователя до Azure Resource Manager и поставщика ресурсов.

Схема, показывающая, как применяется регулирование в качестве запроса, передается от пользователя к Azure Resource Manager и поставщику ресурсов.

Ограничения по подписке и клиенту

Ограничения распространяются на каждую операцию на уровне подписки и клиента. В запросе на подписку также передается ваш идентификатор подписки, например для получения перечня групп ресурсов в вашей подписке. Например, отправка запроса https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01 является операцией уровня подписки. Запросы клиента не включают идентификатор подписки (например, извлечение допустимых расположений Azure). Например, отправка запроса https://management.azure.com/tenants?api-version=2022-01-01 является операцией на уровне клиента.

В таблице ниже приведены ограничения в час по умолчанию.

Область Операции Ограничение
Подписка Читает 12 000
Подписка Удаляет 15 000
Подписка Пишет 1200
Клиент Читает 12 000
Клиент Пишет 1200

Эти ограничения касаются субъекта безопасности (пользователь или приложение), выполняющего запросы, а также идентификатора подписки или идентификатора клиента. Если запросы поступают от нескольких субъектов безопасности, ваше ограничение для подписки или клиента превышает 12 000 и 1200 в час.

Эти ограничения применяются к каждому экземпляру Azure Resource Manager. В каждом регионе Azure существует несколько экземпляров, а Azure Resource Manager развертывается во всех регионах Azure. На практике действуют более высокие ограничения. Различные экземпляры Azure Resource Manager обычно обрабатывают запросы пользователя.

Остальные запросы возвращаются в значениях заголовка ответа.

Ограничения поставщика ресурсов

Поставщики ресурсов применяют собственные ограничения. В каждой подписке поставщик ресурсов регулируется в каждом регионе ресурса в запросе. Так как Resource Manager регулируется экземпляром Resource Manager и в каждом регионе существует несколько экземпляров Resource Manager, поставщик ресурсов может получать больше запросов, чем ограничения по умолчанию в предыдущем разделе.

В этом разделе рассматриваются ограничения наиболее распространенных поставщиков ресурсов.

Регулирование хранилища

Следующие ограничения применяются только при выполнении операций управления с помощью Azure Resource Manager с служба хранилища Azure и поставщиком ресурсов хранилища. Ограничения применяются для каждой подписки для каждого региона ресурса в запросе.

Ресурс Ограничение
Операций управления учетными записями хранения (чтение) 800 за 5 минут
Операций управления учетными записями хранения (запись) 10 в секунду / 1200 в час
Операции управления учетными записями хранения (список) 100 за 5 минут

Регулирование сети

Поставщик ресурсов Microsoft.Network применяет следующие ограничения:

Операция Ограничение
запись/удаление (PUT) 1000 за 5 минут
чтение (GET) 10 000 за 5 минут

Помимо этих общих ограничений, ознакомьтесь с ограничениями использования для Azure DNS.

Регулирование вычислений

Microsoft Compute реализует регулирование, чтобы обеспечить оптимальный интерфейс для пользователей виртуальных машин и масштабируемых наборов виртуальных машин. Ограничения регулирования вычислений предоставляют исчерпывающую информацию о политиках регулирования и ограничениях для виртуальных машин, Масштабируемые наборы виртуальных машин и масштабируемого набора виртуальных машин.

Регулирование Azure Resource Graph

Azure Resource Graph ограничивает количество запросов к своим операциям. Описанные в этой статье шаги, позволяющие определить оставшееся количество запросов, и порядок действий по достижению ограничения также актуальны и для Resource Graph. Однако в Resource Graph действуют собственные ограничение и скорость восстановления. Подробнее см. в разделе Регулирование Resource Graph.

Azure Resource Graph также имеет решение, которое обеспечивает дополнительный механизм получения данных ресурсов при достижении ограничений регулирования поставщика ресурсов путем простой интеграции с существующими API уровня управления Azure Resource Manager GET и LIST, предлагая мощное масштабируемое решение для доступа к данным ресурсов. Дополнительные сведения см. в разделе API ARG GET/LIST.

Другие поставщики ресурсов

Подробнее о регулировании у других поставщиков ресурсов см. в следующих материалах:

Код ошибки

По достижении ограничения отображается код состояния HTTP 429 — слишком много запросов. Ответ содержит значение Retry-After , указывающее количество секунд, которое должно ждать приложение перед отправкой следующего запроса. Если вы отправляете запрос до истечения значения повторных попыток, запрос не обрабатывается и возвращается новое значение повтора.

Если вы используете пакет SDK Azure, пакет SDK может иметь автоматическую конфигурацию повтора. Подробнее см. в разделе Повторная попытка в службах Azure.

Некоторые поставщики ресурсов выдают значение 429, чтобы сообщить о временной ошибке. Проблема может быть причиной перегрузки, из-за которую запрос не вызвал. Или это может быть временная ошибка состояния целевого ресурса или зависимого ресурса. Например, поставщик сетевых ресурсов возвращает значение 429 с кодом ошибки RetryableErrorDueToAnotherOperation , когда другая операция блокирует целевой ресурс. Чтобы определить причину проблемы — будь то регулирование или временная ошибка, — изучите сведения об ошибке в ответе.

Количество оставшихся запросов

Количество оставшихся запросов можно определить, проверяя заголовки ответов. В заголовках ответов на запросы на чтение указано количество оставшихся запросов. Заголовки ответов на запросы на запись содержат количество оставшихся запросов на запись. В приведенной ниже таблице описаны заголовки ответов, в которых можно проверить эти значения.

Заголовок ответа Описание
X-ms-ratelimit-remaining-subscription-deletes Оставшееся число запросов на удаление для подписки. Это значение возвращается при операциях удаления.
количество оставшихся запросов подписки по ограничению x-ms Оставшееся число запросов на чтение для подписки. Это значение возвращается при операциях чтения.
X-ms-ratelimit-remaining-subscription-writes Оставшееся число запросов на запись для подписки. Это значение возвращается при операциях записи.
Лимит скорости оставшихся чтений арендатора Оставшиеся операции чтения в пределах клиента.
X-ms-ratelimit-remaining-tenant-writes Оставшиеся записи в пределах клиента.
x-ms-ограничение-оставшиеся-запросы-к-ресурсам-подписки Остальные запросы типа ресурсов в пределах подписки.

Это значение заголовка возвращается только в том случае, если служба переопределяет ограничение по умолчанию. Resource Manager добавляет это значение вместо ограничения подписки на запросы на чтение или запись.
x-ms-ratelimit-remaining-subscription-resource-entities-read Оставшиеся запросы на коллекцию типов ресурсов в пределах подписки.

Это значение заголовка возвращается только в том случае, если служба переопределяет ограничение по умолчанию. Это значение содержит число оставшихся запросов коллекции (вывод ресурсов).
x-ms-ограничение-оставшиеся-запросы-ресурсов-арендатора Остальные запросы типа ресурсов в пределах клиента.

Этот заголовок добавляется для запросов на уровне клиента и только если служба переопределяет ограничение по умолчанию. Resource Manager добавляет это значение вместо ограничения клиента на запросы на чтение или запись.
x-ms-рейтинг-предел-оставшийся-арендатор-ресурс-сущности-чтение Оставшееся количество запросов коллекции типов ресурсов для клиента.

Этот заголовок добавляется только для запросов на уровне клиента и только если служба переопределяет ограничение по умолчанию.

Поставщик ресурсов также может возвращать заголовки ответов с информацией об оставшихся запросах. Подробнее о заголовках ответов, которые возвращает поставщик вычислительных ресурсов, см. в разделе Заголовки ответов с информацией о частоте вызовов.

Получение значений заголовков

Получение этих значений заголовков в коде или сценарии ничем не отличается от извлечения любого другого значения заголовка.

Например, приведенный ниже код C# извлекает значение заголовка из объекта HttpWebResponse с именем response.

response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)

В PowerShell извлеките значение заголовка Invoke-WebRequest из операции.

$r = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/{guid}/resourcegroups?api-version=2016-09-01 -Method GET -Headers $authHeaders
$r.Headers["x-ms-ratelimit-remaining-subscription-reads"]

Полный пример PowerShell см. в разделе "Проверка ограничений ARM для данной подписки".

Чтобы просмотреть оставшиеся запросы на отладку, укажите параметр -Debug в командлете PowerShell .

Get-AzResourceGroup -Debug

Ответ содержит множество значений, включая следующее значение ответа:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
OK

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999

Чтобы получить ограничение на запись, используйте операцию записи:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

Ответ содержит множество значений, включая следующие значения:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
Created

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199

В Azure CLI вы используете более подробный параметр для получения значения заголовка:

az group list --verbose --debug

Команда возвращает много значений, включая следующие значения:

msrest.http_logger : Response status: 200
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Content-Encoding': 'gzip'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'Vary': 'Accept-Encoding'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-reads': '11998'

Чтобы получить ограничение на запись, используйте операцию записи:

az group create -n myresourcegroup --location westus --verbose --debug

Операция возвращает много значений, включая следующие значения:

msrest.http_logger : Response status: 201
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Length': '163'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-writes': '1199'

Следующие шаги