Partilhar via


Política de limite de taxa de pedidos

A política de limite de taxa de pedidos do grupo de cargas de trabalho permite-lhe limitar o número de pedidos simultâneos classificados no grupo de cargas de trabalho, por grupo de cargas de trabalho ou por principal.

Os limites de taxa são impostos ao nível definido pela política de imposição de Limites de taxa de pedidos do grupo de cargas de trabalho.

O objeto de política

Uma política de limite de taxa de pedidos tem as seguintes propriedades:

Name Valores suportados Description
IsEnabled true, false Indica se a política está ativada ou não.
Âmbito WorkloadGroup, Principal O âmbito ao qual se aplica o limite.
LimitKind ConcurrentRequests, ResourceUtilization O tipo de limite de taxa de pedidos.
Propriedades Saco de propriedades Propriedades do limite de taxa de pedidos.

Limite de taxa de pedidos simultâneos

Um limite de taxa de pedido do tipo ConcurrentRequests inclui a seguinte propriedade:

Nome Tipo Descrição Valores Suportados
MaxConcurrentRequests int O número máximo de pedidos simultâneos. [0, 10000]

Nota

  • Se um grupo de cargas de trabalho não tiver um limite especificado nos pedidos simultâneos máximos, está sujeito ao valor máximo predefinido de 10000.

Quando um pedido excede o limite no número máximo de pedidos simultâneos:

  • O estado do pedido, conforme apresentado pelos comandos de informações do sistema, será Throttled.
  • A mensagem de erro incluirá a origem da limitação e a capacidade que foi excedida.

A tabela seguinte mostra alguns exemplos de pedidos simultâneos que excedem o limite máximo e a mensagem de erro devolvida por estes pedidos:

Scenario Mensagem de erro
Um comando limitado .create table que foi classificado para o default grupo de cargas de trabalho, que tem um limite de 80 pedidos simultâneos no âmbito do grupo de cargas de trabalho. O comando de gestão foi abortado devido a limitação. Tentar novamente após algum recuo poderá ser bem-sucedido. CommandType: "TableCreate", Capacity: 80, Origin: "RequestRateLimitPolicy/WorkloadGroup/default".
Uma consulta limitada que foi classificada para um grupo de cargas de trabalho com o nome MyWorkloadGroup, que tem um limite de 50 pedidos simultâneos no âmbito do grupo de cargas de trabalho. A consulta foi abortada devido a limitação. Tentar novamente após algum recuo poderá ser bem-sucedido. Capacidade: 50, Origem: "RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup".
Uma consulta limitada que foi classificada para um grupo de cargas de trabalho com o nome MyWorkloadGroup, que tem um limite de 10 pedidos simultâneos no âmbito de um principal. A consulta foi abortada devido a limitação. Tentar novamente após algum recuo poderá ser bem-sucedido. Capacidade: 10, Origem: "RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570'.
  • O código de resposta HTTP será 429. O subcódigo será TooManyRequests.
  • O tipo de exceção será QueryThrottledException para consultas e ControlCommandThrottledException para comandos de gestão.

Nota

  • Se um dos limites definidos pela política de capacidade ou por uma política de limite de taxa de pedido for excedido, será limitado um comando de gestão.
  • A política de capacidade pode limitar a taxa de pedidos que se enquadram numa categoria específica, como ingestões.

Limite da taxa de utilização de recursos

Um limite de taxa de pedido do tipo ResourceUtilization inclui as seguintes propriedades:

Nome Tipo Descrição Valores Suportados
ResourceKind ResourceKind O recurso a limitar.

Quando ResourceKind é TotalCpuSeconds, o limite é imposto com base em relatórios pós-execução da utilização da CPU de pedidos concluídos. Os pedidos que reportam a utilização de 0,005 segundos de CPU ou inferior não são contabilizados. O limite (MaxUtilization) representa o total de segundos de CPU que podem ser consumidos por pedidos numa janela de tempo especificada (TimeWindow). Por exemplo, um utilizador que execute consultas ad hoc pode ter um limite de 1000 segundos de CPU por hora. Se este limite for excedido, as consultas subsequentes serão limitadas, mesmo que sejam iniciadas em simultâneo, uma vez que os segundos cumulativos da CPU ultrapassaram o limite definido no período de janela deslizante.
RequestCount, TotalCpuSeconds
MaxUtilization long O máximo do recurso que pode ser utilizado. RequestCount: [1, 16777215]; TotalCpuSeconds: [1, 828000]
TimeWindow timespan A janela de tempo deslizante durante a qual o limite é aplicado. [00:01:00, 1.00:00:00]

Quando um pedido excede o limite de utilização de recursos:

  • O estado do pedido, conforme apresentado pelos comandos de informações do sistema, será Throttled.
  • A mensagem de erro incluirá a origem da limitação e a quota que foi excedida. Por exemplo:

A tabela seguinte mostra alguns exemplos de pedidos que excedem o limite de taxa de utilização de recursos e a mensagem de erro devolvida por estes pedidos:

Scenario Mensagem de erro
Um pedido limitado que foi classificado para um grupo de cargas de trabalho com o nome Automated Requests, que tem um limite de 1000 pedidos por hora no âmbito de um principal. O pedido foi negado devido a limitações de quota excedidas. Recurso: "RequestCount", Quota: "1000", TimeWindow: "01:00:00", Origem: "RequestRateLimitPolicy/WorkloadGroup/Automated Requests/Principal/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570'.
Um pedido limitado, que foi classificado como um grupo de cargas de trabalho com o nome Automated Requests, que tem um limite de 2000 segundos totais de CPU por hora no âmbito do grupo de cargas de trabalho. O pedido foi negado devido a limitações de quota excedidas. Recurso: "TotalCpuSeconds", Quota: "2000", TimeWindow: "01:00:00", Origem: "RequestRateLimitPolicy/WorkloadGroup/Pedidos Automatizados".
  • O código de resposta HTTP será 429. O subcódigo será TooManyRequests.
  • O tipo de exceção será QuotaExceededException.

Como a consistência afeta os limites de taxa

Com uma consistência forte, o limite predefinido em pedidos simultâneos máximos depende do SKU do cluster e é calculado como: Cores-Per-Node x 10. Por exemplo, um cluster configurado com nós de D14_v2 do Azure, em que cada nó tem 16 vCores, terá um limite predefinido de 16 x 10 = 160.

Com consistência fraca, o limite predefinido efetivo em pedidos simultâneos máximos depende do SKU do cluster e do número de cabeças de consulta e é calculado como: Cores-Per-Node x 10 x Number-Of-Query-Heads. Por exemplo, um cluster configurado com o Azure D14_v2 e 5 cabeças de consulta, em que cada nó tem 16 vCores, terá um limite predefinido efetivo de 16 x 10 x8005 = .

Para obter mais informações, veja Consistência de consultas.

O default grupo de cargas de trabalho

O default grupo de cargas de trabalho tem a seguinte política definida por predefinição. Esta política pode ser alterada.

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

Nota

  • Quando altera a política para o default grupo de cargas de trabalho, tem de ser definido um limite para os pedidos simultâneos máximos.

Exemplos

As seguintes políticas permitem até:

  • 500 pedidos simultâneos para o grupo de cargas de trabalho.
  • 25 pedidos simultâneos por principal.
  • 50 pedidos por principal por hora.
[
  {
    "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"
    }
  }
]

As seguintes políticas bloquearão todos os pedidos classificados para o grupo de cargas de trabalho:

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