Ограничения скорости и использования

Azure DevOps Services

Azure DevOps Службы используют многотенантность для снижения затрат и повышения производительности. Эта конструкция может привести к проблемам с производительностью или сбоям, когда другие пользователи общих ресурсов имеют пики потребления. Чтобы предотвратить это, Azure DevOps ограничивает ресурсы, которые каждый пользователь может использовать, и количество запросов, которые они могут сделать для определенных команд. При превышении этих ограничений будущие запросы могут быть отложены или заблокированы.

Дополнительные сведения см. в ограничениях Git и рекомендациях по предотвращению превышения лимитов скорости.

Глобальный предел потребления

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

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

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

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

Когда запросы отдельного пользователя блокируются, пользователь получает ответы с кодом HTTP 429 (слишком много запросов) и сообщение, аналогичное следующему:

TF400733: The request has been canceled: Request was blocked due to exceeding usage of resource <resource name> in namespace <namespace ID>.

единицы пропускной способности Azure DevOps

Azure DevOps пользователи потребляют много общих ресурсов, а уровень потребления зависит от таких факторов:

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

Чтобы измерить это действие, Azure DevOps выражает потребление ресурсов в единицах пропускной способности Azure DevOps (TSTUs). TSTU — это абстрактная единица нагрузки, представляющая сочетание различных ресурсов, в том числе:

  • Использование базы данных — измеряется главным образом с помощью DTU в Azure SQL Database.
  • Использование вычислительных ресурсов — ЦП, память и операции ввода-вывода из уровней приложений и агентов заданий.
  • Использование хранилища — пропускная способность Azure Storage.

Примечание.

TSTU намеренно сделаны абстрактными. Они объединяют потребление ресурсов между уровнями вычислительных ресурсов, хранилища и баз данных в распределенной инфраструктуре. Основные метрики (ЦП, память, ввод-вывод, DTU) не отображаются напрямую и сами по себе не имеют значения. TSTUs предоставляет единый способ представления нагрузки, что упрощает управление и мониторинг использования без предоставления полной сложности отдельных компонентов ресурсов. Вы не можете вычислить использование в TSTUs для действий с формулой, но можете увидеть, сколько TSTUs потребляет операция на странице мониторинга использования. Некоторые операции, такие как запросы рабочих элементов, могут изменяться в потреблении ресурсов по мере роста и изменения вашей организации, поэтому вам может потребоваться периодически проводить бенчмаркинг, чтобы оставаться точным.

В настоящее время ТСОП основное внимание уделяется Azure SQL Database DTU, так как базы данных являются общим ресурсом, скорее всего, перегружены чрезмерным потреблением.

  • Один TSTU представляет среднюю нагрузку, созданную типичным пользователем Azure DevOps в течение пяти минут.
  • Обычная активность пользователя может создавать пики до 10 TSTU или менее в течение пяти минут.
  • Более крупные, но менее частые пики могут достигать 100 TSTUs.
  • Глобальный предел составляет 200 ТСРЕ в пределах любого скользящего пятиминутного окна.

Лучшие практики

  • Учитывайте заголовок Retry-After: если вы получаете его в ответе, подождите указанное время перед отправкой другого запроса. Ответ по-прежнему возвращает HTTP 200, поэтому логика повторных попыток не требуется.
  • Отслеживайте заголовки X-RateLimit: если они доступны, контролируйте X-RateLimit-Remaining и X-RateLimit-Limit, чтобы оценить, как быстро вы приближаетесь к порогу. Это позволит клиенту сгладить всплески запросов и избежать принудительных задержек.

Примечание.

Удостоверения, используемые средствами и приложениями для интеграции с Azure DevOps могут иногда нуждаться в более высоких скоростях и ограничениях использования за пределы допустимого потребления. Увеличьте эти ограничения, назначив уровень доступа Basic + Test Plans удостоверениям, которые использует приложение. После того как вам больше не нужны более высокие ограничения скорости, вернитесь к предыдущему уровню доступа. Плата за уровень доступа "Базовый и тестовый план " взимается только за период, назначенный удостоверению. Идентификаторы, уже назначенные подписке Visual Studio Enterprise, нельзя назначить на уровень доступа Basic + Test Plans, пока не удалите подписку.

Трубопроводы

Ограничение скорости работает так же, как и для Azure Pipelines. Каждый конвейер является отдельной сущностью, а потребление ресурсов отслеживается отдельно. Даже если агенты сборки размещаются самостоятельно, они создают нагрузку путем клонирования и отправки журналов.

Существует ограничение 200 TSTU для каждого конвейера в скользящем 5-минутном окне. Это ограничение соответствует глобальному ограничению потребления для пользователей. Если ограничение скорости обработки может задерживать или блокировать конвейер, вы увидите сообщение в приложенных журналах.

Взаимодействие с клиентом API

Когда запросы задерживаются или блокируются, Azure DevOps возвращает заголовки ответов, чтобы помочь клиентам API реагировать. Хотя эти заголовки не полностью стандартизированы, эти заголовки широко соответствуют другим популярным службам.

В следующей таблице перечислены доступные заголовки и то, что они означают. За исключением X-RateLimit-Delay, все эти заголовки отправляются до начала задержки запросов. Эта конструкция позволяет клиентам заранее замедлить частоту запросов.

название заголовка

Описание


Retry-After

Заголовок, указанный в RFC 6585, отправляется для указания времени ожидания перед отправкой следующего запроса, чтобы он не превышал порог обнаружения. Единицы: секунды.


X-RateLimit-Resource

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


X-RateLimit-Delay

Сколько времени запрос задерживается. Единицы: секунды с числом десятичных разрядов до трёх (например, миллисекунды).


X-RateLimit-Limit

Общее количество ТСТУ, разрешенных до введения задержек.


X-RateLimit-Remaining

Количество ТСОП, оставшихся до начала задержки. Если запросы уже отложены или заблокированы, это значение 0.


X-RateLimit-Reset

Время, когда, если все потребление ресурсов останавливается немедленно, отслеживаемое использование возвращается до 0 TSTUs. Выражено во времени эпохи Unix.


X-RateLimit-Cost

Если применимо, указывает TSTU, потребляемые этим запросом (округляются до 5 десятичных разрядов). Используйте это значение для мониторинга и оптимизации высокопроизводительных вызовов.


Ограничения для отслеживания хода выполнения работы, процесса и проекта

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

Вики

Помимо обычных ограничений репозитория, вики-файл в проекте может составлять до 25 МБ.

Подключения к сервису

Нет никаких ограничений для проектов при создании подключений к службам. Однако ограничения могут быть введены через Microsoft Entra ID. Дополнительные сведения см. в следующих статьях: