Condividi tramite


Criteri di limite della frequenza delle richieste

I criteri di limite della frequenza delle richieste del gruppo di carico di lavoro consentono di limitare il numero di richieste simultanee classificate nel gruppo di carico di lavoro, per gruppo di carico di lavoro o per entità.

I limiti di frequenza vengono applicati a livello definito dai criteri di imposizione delle tariffe del gruppo di carico di lavoro.

Oggetto criteri

I criteri di limite della frequenza di richiesta hanno le proprietà seguenti:

Nome Valori supportati Descrizione
IsEnabled true, false Indica se il criterio è abilitato o meno.
Ambito WorkloadGroup, Principal Ambito a cui si applica il limite.
LimitKind ConcurrentRequests, ResourceUtilization Tipo di limite di frequenza della richiesta.
Proprietà Borsa delle proprietà Proprietà del limite di frequenza delle richieste.

Limite di frequenza delle richieste simultanee

Un limite di frequenza di richiesta di tipo ConcurrentRequests include la proprietà seguente:

Nome Tipo Descrizione Valori supportati
MaxConcurrentRequests int Numero massimo di richieste simultanee. [0, 10000]

Nota

  • Se un gruppo di carico di lavoro non ha un limite specificato per le richieste simultanee massime, è soggetto al valore massimo predefinito di 10000.

Quando una richiesta supera il limite massimo di richieste simultanee:

  • Lo stato della richiesta, come presentato dai comandi informazioni di sistema, sarà Throttled.
  • Il messaggio di errore includerà l'origine della limitazione e la capacità superata.

La tabella seguente mostra alcuni esempi di richieste simultanee che superano il limite massimo e il messaggio di errore restituito da queste richieste:

Scenario Messaggio di errore
Comando limitato .create table classificato al default gruppo di carico di lavoro, con un limite di 80 richieste simultanee nell'ambito del gruppo di carico di lavoro. Il comando di gestione è stato interrotto a causa della limitazione. Riprovare dopo un backoff potrebbe avere esito positivo. CommandType: 'TableCreate', Capacità: 80, Origin: 'RequestRateLimitPolicy/WorkloadGroup/default'.
Query limitata classificata in un gruppo di carico di lavoro denominato MyWorkloadGroup, con un limite di 50 richieste simultanee nell'ambito del gruppo di carico di lavoro. La query è stata interrotta a causa della limitazione. Riprovare dopo un backoff potrebbe avere esito positivo. Capacità: 50, Origin: 'RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup'.
Query limitata classificata in un gruppo di carico di lavoro denominato MyWorkloadGroup, con un limite di 10 richieste simultanee nell'ambito di un'entità. La query è stata interrotta a causa della limitazione. Riprovare dopo un backoff potrebbe avere esito positivo. Capacità: 10, Origin: 'RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570'.
  • Il codice di risposta HTTP sarà 429. Il codice secondario sarà TooManyRequests.
  • Il tipo di eccezione sarà QueryThrottledException per le query e ControlCommandThrottledException per i comandi di gestione.

Nota

  • Se uno dei limiti definiti dai criteri di capacità o da un criterio di limite della frequenza di richiesta viene superato, verrà limitato un comando di gestione.
  • I criteri di capacità possono limitare la frequenza di richiesta delle richieste che rientrano in una categoria specifica, ad esempio inserimenti.

Limite di velocità di utilizzo delle risorse

Un limite di frequenza di richiesta di tipo ResourceUtilization include le proprietà seguenti:

Nome Tipo Descrizione Valori supportati
ResourceKind ResourceKind Risorsa da limitare.

Quando ResourceKind è TotalCpuSeconds, il limite viene applicato in base ai report di post-esecuzione dell'utilizzo della CPU delle richieste completate. Le richieste che segnalano l'utilizzo di 0,005 secondi di CPU o inferiore non vengono conteggiate. Il limite (MaxUtilization) rappresenta i secondi totali di CPU che possono essere utilizzati dalle richieste all'interno di un intervallo di tempo specificato (TimeWindow). Ad esempio, un utente che esegue query ad hoc può avere un limite di 1000 secondi di CPU all'ora. Se questo limite viene superato, le query successive verranno limitate, anche se avviate simultaneamente, poiché i secondi di CPU cumulativi superano il limite definito entro il periodo di finestra scorrevole.
RequestCount, TotalCpuSeconds
MaxUtilization long Valore massimo della risorsa che può essere usata. RequestCount: [1, 16777215]; TotalCpuSeconds: [1, 828000]
TimeWindow timespan Intervallo di tempo scorrevole durante il quale viene applicato il limite. [00:01:00, 1.00:00:00]

Quando una richiesta supera il limite di utilizzo delle risorse:

  • Lo stato della richiesta, come presentato dai comandi informazioni di sistema, sarà Throttled.
  • Il messaggio di errore includerà l'origine della limitazione e la quota superata. Ad esempio:

La tabella seguente mostra alcuni esempi di richieste che superano il limite di velocità di utilizzo delle risorse e il messaggio di errore restituito da queste richieste:

Scenario Messaggio di errore
Richiesta limitata classificata in un gruppo di carico di lavoro denominato Automated Requests, con un limite di 1000 richieste all'ora nell'ambito di un'entità. La richiesta è stata negata a causa del superamento delle limitazioni delle quote. Risorsa: 'RequestCount', Quota: '1000', TimeWindow: '01:00:00', Origin: 'RequestRateLimitPolicy/WorkloadGroup/Automated Request/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570'.
Richiesta limitata, classificata in un gruppo di carico di lavoro denominato Automated Requests, con un limite di 2000 secondi di CPU totali all'ora nell'ambito del gruppo di carico di lavoro. La richiesta è stata negata a causa del superamento delle limitazioni delle quote. Risorsa: 'TotalCpuSeconds', Quota: '2000', TimeWindow: '01:00:00', Origin: 'RequestRateLimitPolicy/WorkloadGroup/Richieste automatizzate'.
  • Il codice di risposta HTTP sarà 429. Il codice secondario sarà TooManyRequests.
  • Il tipo di eccezione sarà QuotaExceededException.

Come la coerenza influisce sui limiti di frequenza

Con coerenza forte, il limite predefinito per le richieste simultanee massime dipende dallo SKU del cluster e viene calcolato come : Cores-Per-Node x 10. Ad esempio, un cluster configurato con nodi di Azure D14_v2, in cui ogni nodo ha 16 vCore, avrà un limite predefinito di 16 x 10 = 160.

Con coerenza debole, il limite predefinito effettivo per le richieste simultanee massime dipende dallo SKU del cluster e dal numero di test di query e viene calcolato come : Cores-Per-Node x 10 x Number-Of-Query-Heads. Ad esempio, un cluster configurato con Azure D14_v2 e 5 teste di query, in cui ogni nodo ha 16 vCore, avrà un limite predefinito effettivo di 16 x x800105 = .

Per altre informazioni, vedere Coerenza query.

Gruppo default di carico di lavoro

Il default gruppo di carico di lavoro ha i criteri seguenti definiti per impostazione predefinita. Questo criterio può essere modificato.

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

Nota

  • Quando si modificano i criteri per il default gruppo di carico di lavoro, è necessario definire un limite per le richieste simultanee massime.

Esempio

I criteri seguenti consentono fino a:

  • 500 richieste simultanee per il gruppo di carico di lavoro.
  • 25 richieste simultanee per entità.
  • 50 richieste per entità all'ora.
[
  {
    "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"
    }
  }
]

I criteri seguenti bloccano tutte le richieste classificate al gruppo di carico di lavoro:

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