Criterio SpikeArrest

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Icona SpikeArrest nell'interfaccia utente

Il criterio SpikeArrest protegge dai picchi di traffico con l'elemento <Rate>. Questo elemento limita il numero di richieste elaborate da un proxy API e inviate a un backend, proteggendo da ritardi nelle prestazioni e tempi di inattività.

Questo criterio è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Per informazioni sui tipi di criteri e sulla disponibilità con ciascun tipo di ambiente, consulta Tipi di criteri.

Differenza tra SpikeArrest e Quota

I criteri per le quote configurano il numero di messaggi di richiesta che un'app client può inviare a un'API nel corso di un'ora, un giorno, una settimana o un mese. I criteri per le quote applicano limiti di consumo alle app client mantenendo un contatore distribuito che conteggia le richieste in entrata.

Utilizza Quota per applicare contratti commerciali o SLA con sviluppatori e partner, piuttosto che per la gestione del traffico operativo. Utilizza SpikeArrest per proteggerti da picchi improvvisi di traffico API. Vedi anche Confronto tra le norme Quota e SpikeArrest.

Video

Questi video illustrano i casi d'uso di questa norma:

Perché è necessario

Confrontare i criteri per le quote

Elemento <SpikeArrest>

Definisce il criterio SpikeArrest.

Valore predefinito Consulta la scheda Policy predefinita di seguito.
Obbligatorio? Facoltativo
Tipo Complex object
Elemento principale n/a
Elementi secondari <Identifier>
<MessageWeight>
<Rate> (obbligatorio)
<UseEffectiveCount>

Sintassi

L'elemento <SpikeArrest> utilizza la seguente sintassi:

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <DisplayName>display_name</DisplayName>
  <Properties/>
  <Identifier ref="flow_variable"/>
  <MessageWeight ref="flow_variable"/>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
  <UseEffectiveCount>[false|true]</UseEffectiveCount>
</SpikeArrest>

Norme predefinite

L'esempio seguente mostra le impostazioni predefinite quando aggiungi un criterio SpikeArrest al tuo flusso nell'interfaccia utente:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest-1">
  <DisplayName>Spike Arrest-1</DisplayName>
  <Properties/>
  <Identifier ref="request.header.some-header-name"/>
  <MessageWeight ref="request.header.weight"/>
  <Rate>30ps</Rate>
  <UseEffectiveCount>false</UseEffectiveCount>
</SpikeArrest>

Questo elemento ha i seguenti attributi comuni a tutti i criteri:

Attributo Predefinito Obbligatorio? Descrizione
name N/D Obbligatorio

Il nome interno del criterio. Il valore dell'attributo name può contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Se vuoi, utilizza l'elemento <DisplayName> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

continueOnError falso Facoltativo Imposta su false per restituire un errore quando un criterio non va a buon fine. Questo è un comportamento previsto per la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un fallimento del criterio. Vedi anche:
enabled true Facoltativo Imposta su true per applicare il criterio. Imposta su false per disattivare il criterio. Il criterio non verrà applicato anche se rimane collegato a un flusso.
async   falso Ritirato Questo attributo è stato ritirato.

Esempi

I seguenti esempi mostrano alcuni modi in cui puoi utilizzare il criterio SpikeArrest:

Esempio 1

L'esempio seguente imposta la frequenza su cinque al secondo:

<SpikeArrest name="SA-Static-5ps">
  <Rate>5ps</Rate>
  <UseEffectiveCount>false</UseEffectiveCount>
</SpikeArrest>

Questo criterio di esempio consente un massimo di 5 richieste al secondo. Tramite lo smoothing, viene applicato un massimo di una richiesta ogni 200 millisecondi (intervallo di 1000/5).

Esempio 2

L'esempio seguente imposta la frequenza su 12 al minuto:

<SpikeArrest name="SA-Static-12pm">
  <Rate>12pm</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Questo criterio di esempio consente un massimo di 12 richieste al minuto alla velocità di una richiesta ogni 5 secondi (60/12). Se nell'intervallo di 5 secondi sono presenti più richieste, queste sono consentite (nessun livellamento) a condizione che il numero di richieste sia inferiore al limite di frequenza configurato di 12 al minuto.

Esempio 3

L'esempio seguente limita le richieste a 12 al minuto (una richiesta consentita ogni cinque secondi o 60/12).

Inoltre, l'elemento <MessageWeight> accetta un valore personalizzato (la variabile request_specific_weight) che regola il peso del messaggio per richieste specifiche. Ciò fornisce un controllo aggiuntivo sulla limitazione per le entità identificate con l'elemento <Identifier>.

<SpikeArrest name="SA-With-Dynamic-Weight-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request_specific_weight" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Esempio 4

L'esempio seguente indica a SpikeArrest di cercare un valore di runtime impostato tramite la richiesta passata come variabile di flusso request.header.runtime_rate:

<SpikeArrest name="SA-From-Inbound-Header-1">
  <Rate ref="request.header.runtime_rate" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Il valore della variabile di flusso deve essere nel formato intpm o intps.

Per provare questo esempio, esegui una richiesta come la seguente:

curl https://my-api-endpoint.net/price -H 'runtime_rate:30ps'

In genere, non consentiresti all'applicazione chiamante di impostare il limite di frequenza. Deriveresti invece il limite di frequenza da un valore impostato come attributo personalizzato in un prodotto API o nell'applicazione client.

Riferimento all'elemento secondario

Questa sezione descrive gli elementi secondari di <SpikeArrest>.

<DisplayName>

Da utilizzare insieme all'attributo name per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso e più naturale.

L'elemento <DisplayName> è comune a tutti i criteri.

Valore predefinito N/D
Obbligatorio? Facoltativo. Se ometti <DisplayName>, viene utilizzato il valore dell'attributo name del criterio.
Tipo Stringa
Elemento principale <PolicyElement>
Elementi secondari Nessuno

La sintassi dell'elemento <DisplayName> è la seguente:

Sintassi

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Esempio

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

L'elemento <DisplayName> non ha attributi o elementi secondari.

<Identifier>

Consente di scegliere come raggruppare le richieste in modo che il criterio SpikeArrest possa essere applicato in base a un elemento della richiesta in entrata. Ad esempio, puoi applicare limiti di frequenza per ID sviluppatore, nel qual caso tutte le richieste inviate dalle app di proprietà di un determinato sviluppatore condivideranno un unico conteggio SpikeArrest. In alternativa, puoi applicare un limite di frequenza per ID client, nel qual caso ogni app client sarà soggetta a un contatore del limite di frequenza distinto. Puoi anche fare riferimento a una variabile impostata in precedenza dal proxy. Questa variabile potrebbe combinare più fattori, ad esempio l'ID client e l'indirizzo IP del client.

Utilizzalo in combinazione con l'elemento <MessageWeight> per un controllo più granulare della limitazione delle richieste.

Se lasci vuoto l'elemento <Identifier>, viene applicato un limite di frequenza a tutte le richieste al proxy API.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Stringa
Elemento principale <SpikeArrest>
Elementi secondari Nessuno

Sintassi

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Identifier ref="flow_variable"/>
</SpikeArrest>
        

Esempio 1

Il seguente esempio applica il criterio SpikeArrest per ID sviluppatore:

<SpikeArrest name="Spike-Arrest-1">
  <Identifier ref="developer.id"/>
  <Rate>42pm</Rate/>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

La tabella seguente descrive gli attributi di <Identifier>:

Attributo Descrizione Predefinito Presenza
ref Identifica la variabile in base alla quale SpikeArrest raggruppa le richieste in entrata. Puoi utilizzare qualsiasi variabile di flusso per indicare un client univoco, ad esempio quelle disponibili con il criterio VerifyAPIKey. Puoi anche impostare variabili personalizzate utilizzando il criterio JavaScript o il criterio AssignMessage. n/a Obbligatorio

Questo elemento è trattato anche in questo post della community di Apigee.

<MessageWeight>

Specifica la ponderazione definita per il messaggio corrente. Il peso del messaggio modifica l'impatto di una singola richiesta sul calcolo della percentuale di SpikeArrest. Il peso del messaggio può essere qualsiasi variabile di flusso, ad esempio un'intestazione HTTP, un parametro di query, un parametro del modulo o il contenuto del corpo del messaggio. Tuttavia, in genere non utilizzeresti una variabile derivata direttamente dalla richiesta in entrata. In alternativa, puoi utilizzare una variabile che rappresenta un attributo personalizzato in un prodotto API o nell'applicazione client. Puoi anche utilizzare variabili personalizzate impostate con valori dinamici tramite il JavaScript policy o il AssignMessage policy. In tutti i casi, il valore deve essere un numero intero positivo diverso da zero.

Utilizza il peso insieme a <Identifier> per limitare ulteriormente le richieste di client o app specifici.

Ad esempio, se SpikeArrest <Rate> è 10pm e il proxy utilizza una variabile che contiene il valore 2 per il peso del messaggio, verranno consentiti solo 5 messaggi al minuto per l'identificatore specificato perché ogni richiesta conta come 2.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Numero intero
Elemento principale <SpikeArrest>
Elementi secondari Nessuno

Sintassi

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <MessageWeight ref="flow_variable"/>
</SpikeArrest>

Ponderazione variabile

L'esempio seguente limita le richieste a 12 al minuto (una richiesta consentita ogni cinque secondi o 60/12):

<SpikeArrest name="SA-With-Dynamic-Weight-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request_specific_weight" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

In questo esempio, <MessageWeight> accetta un valore personalizzato (la variabile request_specific_weight, presumibilmente calcolata in precedenza) che regola i pesi dei messaggi per richieste specifiche. In questo modo viene fornito un controllo aggiuntivo sulla limitazione, in base alla complessità della richiesta.

Peso statico

L'esempio seguente limita le richieste a 1000 al minuto e a ogni richiesta viene assegnato un peso di 1:

<SpikeArrest name="SA-Default-Weight-1">
  <Rate>1000pm</Rate>
  <Identifier ref="client_id" />
  <!-- omit <MessageWeight/> to use a default weight of 1 -->
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

La tabella seguente descrive gli attributi di <MessageWeight>:

Attributo Descrizione Presenza Predefinito
ref Identifica la variabile di flusso che contiene il peso del messaggio per il client specifico. Può essere qualsiasi variabile di flusso, ad esempio un parametro di query HTTP, un'intestazione o il contenuto del corpo del messaggio. Per ulteriori informazioni, consulta la sezione Riferimento alle variabili di flusso. Puoi anche impostare variabili personalizzate utilizzando il criterio JavaScript o il criterio AssignMessage. Obbligatorio N/D

<Rate>

Specifica la velocità con cui limitare i picchi (o i burst) di traffico impostando il numero di richieste consentite a intervalli di un minuto o di un secondo. Puoi utilizzare questo elemento in combinazione con <Identifier> e <MessageWeight> per limitare il traffico in modo uniforme in fase di runtime con un controllo preciso. Utilizza l'elemento <UseEffectiveCount> per impostare l'algoritmo di limitazione della frequenza utilizzato dalla policy.

Consulta la sezione SpikeArrest della pagina Limiti per i limiti di frequenza massimi che puoi specificare.

Valore predefinito n/a
Obbligatorio? Obbligatorio
Tipo Numero intero
Elemento principale <SpikeArrest>
Elementi secondari Nessuno

Sintassi

Puoi specificare le tariffe in uno dei seguenti modi:

  • Una tariffa statica che specifichi come corpo dell'elemento <Rate>
  • Un valore variabile, che può essere passato dal client; identifica il nome della variabile di flusso utilizzando l'attributo ref
<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
</SpikeArrest>

I valori di tasso validi (definiti come valore di variabile o nel corpo dell'elemento) devono rispettare il seguente formato:

  • intps (numero di richieste al secondo, suddivise in intervalli di millisecondi)
  • intpm (numero di richieste al minuto, uniformato in intervalli di secondi)

Il valore di int deve essere un numero intero positivo diverso da zero.

Esempio 1

Il seguente esempio imposta la frequenza su cinque richieste al secondo:

<SpikeArrest name="SA-Static-5ps">
  <Rate>5ps</Rate>
  <UseEffectiveCount>false</UseEffectiveCount>
</SpikeArrest>

Il criterio uniforma la velocità a una richiesta consentita ogni 200 millisecondi (1000/5).

Esempio 2

L'esempio seguente imposta la frequenza su 12 richieste al minuto:

<SpikeArrest name="SA-Static-12pm">
  <Rate>12pm</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Questa norma di esempio uniforma la frequenza a una richiesta consentita ogni cinque secondi (60/12).

La tabella seguente descrive gli attributi di <Rate>:

Attributo Descrizione Presenza Predefinito
ref Identifica una variabile di flusso che specifica la tariffa. Può trattarsi di qualsiasi variabile di flusso, ad esempio un parametro di query HTTP, un'intestazione o il contenuto del corpo del messaggio oppure un valore come una KVM. Per ulteriori informazioni, consulta Riferimento alle variabili di flusso.

Puoi anche utilizzare variabili personalizzate utilizzando il criterio JavaScript o il criterio AssignMessage.

Se definisci sia ref che il corpo di questo elemento, il valore di ref viene applicato e ha la precedenza quando la variabile di flusso viene impostata nella richiesta. (Il contrario è vero quando la variabile identificata in ref non è impostata nella richiesta.)

Ad esempio:

<Rate ref="request.header.custom_rate">1pm</Rate>

In questo esempio, se il client non passa un'intestazione custom_rate, la velocità per il proxy API è di 1 richiesta al minuto per tutti i client. Se il client passa un'intestazione custom_rate, il limite di frequenza diventa di 10 richieste al secondo per tutti i client sul proxy, finché non viene inviata una richiesta senza l'intestazione custom_rate.

Puoi utilizzare <Identifier> per raggruppare le richieste e applicare tariffe personalizzate per diversi tipi di client.

Se specifichi un valore per ref, ma non imposti la velocità nel corpo dell'elemento <Rate> e il client non passa un valore, il criterio SpikeArrest genera un errore.

Facoltativo n/a

<UseEffectiveCount>

Questo elemento ti consente di scegliere tra algoritmi di eliminazione dei picchi distinti impostando il valore su true o false, come spiegato di seguito:

true

Se impostato su true, SpikeArrest viene distribuito in una regione. Ciò significa che i conteggi delle richieste vengono sincronizzati tra i processori di messaggi (MP) in una regione. Inoltre, viene utilizzato un algoritmo di limitazione di frequenza "a finestra scorrevole". Questo algoritmo fornisce un comportamento coerente del limite di frequenza e non "uniforma" il numero di richieste in entrata che possono essere inviate al backend. Se viene inviato un burst di richieste in un breve intervallo di tempo, queste sono consentite a condizione che non superino il limite di frequenza configurato, come impostato nell'elemento <Rate>. Ad esempio:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request.header.weight" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

false (impostazione predefinita)

Se impostato su false (valore predefinito), il criterio Spike Arrest utilizza un algoritmo "token bucket" che attenua i picchi di traffico dividendo il limite di frequenza specificato in intervalli più piccoli. Uno svantaggio di questo approccio è che più richieste legittime ricevute in un breve intervallo di tempo possono potenzialmente essere rifiutate.

Ad esempio, supponiamo che tu inserisca una frequenza di 30 pm (30 richieste al minuto). Durante il test, potresti pensare di poter inviare 30 richieste in 1 secondo, purché rientrino in un minuto. Tuttavia, non è così che la norma applica l'impostazione. Se ci pensi, 30 richieste in un periodo di 1 secondo potrebbero essere considerate un mini picco in alcuni ambienti.

  • Le tariffe al minuto vengono uniformate in richieste complete consentite a intervalli di secondi.

    Ad esempio, 30pm viene uniformato in questo modo:
    60 secondi (1 minuto) / 30pm = intervalli di 2 secondi o 1 richiesta consentita ogni 2 secondi. Una seconda richiesta entro 2 secondi non andrà a buon fine. Inoltre, una 31ª richiesta entro un minuto non andrà a buon fine.

  • Le tariffe al secondo vengono uniformate in richieste complete consentite a intervalli di millisecondi.

    Ad esempio, 10ps viene uniformato in questo modo:
    1000 millisecondi (1 secondo) / 10ps = intervalli di 100 millisecondi o 1 richiesta consentita ogni 100 millisecondi. Una seconda richiesta entro 100 ms non andrà a buon fine. Inoltre, l'undicesima richiesta entro un secondo non andrà a buon fine.

Valore predefinito Falso
Obbligatorio? Facoltativo
Tipo Booleano
Elemento principale <SpikeArrest>
Elementi secondari Nessuno

La tabella seguente descrive gli attributi dell'elemento <UseEffectiveCount>:

Attributo Descrizione Predefinito Presenza
ref Identifica la variabile che contiene il valore di <UseEffectiveCount>. Può essere qualsiasi variabile di flusso, ad esempio un parametro di query HTTP, un'intestazione o il contenuto del corpo del messaggio. Per ulteriori informazioni, consulta la Guida di riferimento alle variabili di flusso. Puoi anche impostare variabili personalizzate utilizzando il criterio JavaScript o il criterio AssignMessage. n/a Facoltativo

Variabili di flusso

Quando viene eseguito un criterio SpikeArrest, vengono compilate le seguenti variabili di flusso:

Proprietà Tipo Lettura/scrittura Descrizione Inizio dell'ambito
ratelimit.policy_name.allowed.count Lungo Sola lettura Restituisce il conteggio della quota consentita. PostClientFlow
ratelimit.policy_name.used.count Lungo Sola lettura Restituisce la quota attuale utilizzata all'interno di un intervallo di quota. PostClientFlow
ratelimit.policy_name.available.count Lungo Sola lettura Restituisce il conteggio della quota disponibile nell'intervallo di quota. PostClientFlow
ratelimit.policy_name.exceed.count Lungo Sola lettura Restituisce 1 dopo il superamento della quota. PostClientFlow
ratelimit.policy_name.total.exceed.count Lungo Sola lettura Restituisce 1 dopo il superamento della quota. PostClientFlow
ratelimit.policy_name.expiry.time Lungo Sola lettura

Restituisce l'ora UTC (in millisecondi), che determina la scadenza della quota e l'inizio del nuovo intervallo di quota.

Quando il tipo del criterio Quota è rollingwindow, questo valore non è valido perché l'intervallo di quota non scade mai.

PostClientFlow
ratelimit.policy_name.identifier Stringa Sola lettura Restituisce il riferimento all'identificatore (client) allegato alle norme PostClientFlow
ratelimit.policy_name.class Stringa Sola lettura Restituisce la classe associata all'identificatore client PostClientFlow
ratelimit.policy_name.class.allowed.count Lungo Sola lettura Restituisce il conteggio della quota consentita definita nella classe PostClientFlow
ratelimit.policy_name.class.used.count Lungo Sola lettura Restituisce la quota utilizzata all'interno di un corso PostClientFlow
ratelimit.policy_name.class.available.count Lungo Sola lettura Restituisce il conteggio delle quote disponibili nella classe PostClientFlow
ratelimit.policy_name.class.exceed.count Lungo Sola lettura Restituisce il conteggio delle richieste che superano il limite nella classe nell'intervallo di quota corrente PostClientFlow
ratelimit.policy_name.class.total.exceed.count Lungo Sola lettura Restituisce il conteggio totale delle richieste che superano il limite nella classe in tutti gli intervalli di quota, quindi è la somma di class.exceed.count per tutti gli intervalli di quota. PostClientFlow
ratelimit.policy_name.failed Booleano Sola lettura

Indica se il criterio non è stato rispettato (true o false).

PostClientFlow

Per ulteriori informazioni, consulta Riferimento alle variabili di flusso.

Messaggi di errore

Questa sezione descrive i codici di errore e i messaggi di errore restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi durante l'esecuzione del criterio.

Codice guasto Stato HTTP Causa Correggi
policies.ratelimit.FailedToResolveSpikeArrestRate 500 Questo errore si verifica se il riferimento alla variabile contenente l'impostazione della tariffa all'interno dell'elemento <Rate> non può essere risolto in un valore all'interno del criterio SpikeArrest. Questo elemento è obbligatorio e viene utilizzato per specificare il tasso di arresto degli picchi sotto forma di intpm o intps.
policies.ratelimit.InvalidMessageWeight 500 Questo errore si verifica se il valore specificato per l'elemento <MessageWeight> tramite una variabile di flusso non è valido (un valore non intero).
policies.ratelimit.SpikeArrestViolation 429 Il limite di frequenza è stato superato.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome dell'errore Causa Correggi
InvalidAllowedRate Se la frequenza di arresto degli picchi specificata nell'elemento <Rate> del criterio SpikeArrest non è un numero intero o se la frequenza non ha ps o pm come suffisso, il deployment del proxy API non va a buon fine.

Variabili di errore

Queste variabili vengono impostate quando si verifica un errore di runtime. Per ulteriori informazioni, consulta Informazioni importanti sugli errori relativi alle norme.

Variabili Dove Esempio
fault.name="fault_name" fault_name è il nome dell'errore, come indicato nella tabella Errori di runtime sopra. Il nome dell'errore è l'ultima parte del codice dell'errore. fault.name Matches "SpikeArrestViolation"
ratelimit.policy_name.failed policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. ratelimit.SA-SpikeArrestPolicy.failed = true

Esempio di risposta di errore

Di seguito è riportato un esempio di risposta di errore:

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.SpikeArrestViolation"
      },
      "faultstring":"Spike arrest violation. Allowed rate : 10ps"
   }
}

Esempio di regola di errore

Di seguito è riportato un esempio di regola di errore per gestire un errore SpikeArrestViolation:

<FaultRules>
    <FaultRule name="Spike Arrest Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "SpikeArrestViolation") </Condition>
        </Step>
        <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

Il codice di stato HTTP attuale per il superamento di un limite di frequenza impostato da una quota o da un criterio SpikeArrest è 429 (Troppe richieste).

Schemi

Ogni tipo di policy è definito da uno schema XML (.xsd). Per riferimento, gli schemi delle policy sono disponibili su GitHub.

Argomenti correlati