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


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

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

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

Объект политики

Политика ограничения частоты запросов имеет следующие свойства.

Имя Поддерживаемые значения Описание
IsEnabled true, false Указывает, включена политика или нет.
Область WorkloadGroup, Principal Область, к которому применяется ограничение.
LimitKind ConcurrentRequests, ResourceUtilization Тип ограничения частоты запросов.
Свойства Контейнер свойств Свойства ограничения частоты запросов.

Ограничение количества одновременных запросов

Ограничение частоты запросов вида ConcurrentRequests включает следующее свойство.

Имя Тип Описание Поддерживаемые значения
MaxConcurrentRequests int Максимальное количество одновременных запросов. [0, 10000]

Примечание

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

Когда запрос превышает ограничение на максимальное количество одновременных запросов, происходит следующее.

  • Состояние запроса, представленное командами системной информации, будет Throttled.
  • Сообщение об ошибке будет включать источник регулирования и превышенную емкость.

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

Сценарий Сообщение об ошибке
Регулируемые .create table команды, классифицированные в группу default рабочей нагрузки, которая имеет ограничение в 80 одновременных запросов на область группы рабочей нагрузки. Команда управления была прервана из-за регулирования. Повторная попытка после некоторой задержки может завершиться успешно. CommandType: 'TableCreate', Capacity: 80, Origin: 'RequestRateLimitPolicy/WorkloadGroup/default'.
Регулируемый запрос, классифицированный к группе рабочей нагрузки с именем MyWorkloadGroup, которая имеет ограничение в 50 одновременных запросов на область группы рабочей нагрузки. Запрос был прерван из-за регулирования. Повторная попытка после некоторой задержки может завершиться успешно. Емкость: 50, источник: "RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup".
Регулируемый запрос, классифицированный в группу рабочей нагрузки с именем MyWorkloadGroup, которая имеет ограничение в 10 одновременных запросов на область субъекта. Запрос был прерван из-за регулирования. Повторная попытка после некоторой задержки может завершиться успешно. Емкость: 10, источник: 'RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570'.
  • Код ответа HTTP будет иметь значение 429. SubCode (дополнительный код) будет TooManyRequests.
  • Тип исключения будет для QueryThrottledException запросов и ControlCommandThrottledException для команд управления.

Примечание

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

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

Ограничение частоты запросов вида ResourceUtilization включает следующие свойства.

Имя Тип Описание Поддерживаемые значения
ResourceKind ResourceKind Ресурс для ограничения.

Если ResourceKind имеет значение TotalCpuSeconds, ограничение применяется на основе отчетов об использовании ЦП завершенных запросов после выполнения. Запросы, сообщающие об использовании ЦП в 0,005 секунды или ниже, не учитываются. Ограничение (MaxUtilization) представляет общее количество секунд ЦП, которые могут использоваться запросами в течение указанного периода времени (TimeWindow). Например, пользователь, выполняющий нерегламентированные запросы, может иметь ограничение в 1000 секунд ЦП в час. Если это ограничение превышено, последующие запросы будут регулироваться, даже если они запускаются одновременно, так как совокупный объем ЦП в секундах превысил заданное ограничение в течение периода скользящего окна.
RequestCount, TotalCpuSeconds
MaxUtilization long Максимум ресурса, который можно использовать. RequestCount: [1, 16777215]; TotalCpuSeconds: [1, 828000]
TimeWindow timespan Скользящее временное окно, в течение которого применяется ограничение. [00:01:00, 1.00:00:00]

Когда запрос превышает лимит использования ресурсов, происходит следующее.

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

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

Сценарий Сообщение об ошибке
Регулируемый запрос, классифицированный в группу рабочей нагрузки с именем Automated Requests, которая имеет ограничение в 1000 запросов в час на область субъекта. Запрос был отклонен из-за превышения квотных ограничений. Ресурс: "RequestCount", квота: "1000", TimeWindow: "01:00:00", источник: "RequestRateLimitPolicy/WorkloadGroup/Automated Requests/Principal/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570'.
Регулируемый запрос, который был классифицирован в группу рабочей нагрузки с именем Automated Requests, которая имеет ограничение в 2000 секунд ЦП в час на область группы рабочей нагрузки. Запрос был отклонен из-за превышения квотных ограничений. Ресурс: "TotalCpuSeconds", квота: "2000", TimeWindow: "01:00:00", источник: "RequestRateLimitPolicy/WorkloadGroup/Automated Requests".
  • Код ответа HTTP будет иметь значение 429. SubCode (дополнительный код) будет TooManyRequests.
  • Тип исключения будет QuotaExceededException.

Влияние согласованности на ограничения скорости

При строгой согласованности ограничение по умолчанию на максимальное количество одновременных запросов зависит от номера SKU кластера и вычисляется следующим образом: Cores-Per-Node x 10. Например, кластер, настроенный с узлами Azure D14_v2, где каждый узел имеет 16 виртуальных ядер, будет иметь ограничение 16 по умолчанию x = 10160 .

При слабой согласованности эффективное ограничение по умолчанию на максимальное количество одновременных запросов зависит от номера SKU кластера и количества голов запросов и вычисляется следующим образом: Cores-Per-Node x 10 x Number-Of-Query-Heads. Например, кластер, настроенный с azure D14_v2 и пятью головками запросов, где каждый узел имеет 16 виртуальных ядер, будет иметь действующее ограничение 16 по умолчанию x 10 x = 5800 .

Дополнительные сведения см. в разделе Согласованность запросов.

Группа рабочей нагрузки default

Группа рабочей нагрузки default имеет следующую политику, определенную по умолчанию. Эта политика может быть изменена.

[
  {
    "IsEnabled": true,
    "Scope": "WorkloadGroup",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": < Cores-Per-Node x 10 >
    }
  }
]

Примечание

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

Примеры

Следующие политики позволяют:

  • 500 одновременных запросов для группы рабочей нагрузки;
  • 25 одновременных запросов на каждого участника;
  • 50 запросов на принципала в час.
[
  {
    "IsEnabled": true,
    "Scope": "WorkloadGroup",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": 500
    }
  },
  {
    "IsEnabled": true,
    "Scope": "Principal",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": 25
    }
  },
  {
    "IsEnabled": true,
    "Scope": "Principal",
    "LimitKind": "ResourceUtilization",
    "Properties": {
      "ResourceKind": "RequestCount",
      "MaxUtilization": 50,
      "TimeWindow": "01:00:00"
    }
  }
]

Следующие политики блокируют все запросы, классифицированные в группу рабочей нагрузки:

[
  {
    "IsEnabled": true,
    "Scope": "WorkloadGroup",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": 0
    }
  },
]