SpikeArrest-Richtlinie

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

SpikeArrest-Symbol auf der Benutzeroberfläche

Die SpikeArrest-Richtlinie schützt mit dem Element <Rate> vor Trafficanstieg. Dieses Element drosselt die Anzahl der Anfragen, die von einem API-Proxy verarbeitet und an ein Backend gesendet werden, um Leistungsverzögerungen und Ausfallzeiten zu verhindern.

Diese Richtlinie ist eine Standardrichtlinie, die in jeder Umgebung bereitgestellt werden kann. Informationen zu Richtlinientypen und zur Verfügbarkeit bei jedem Umgebungstyp finden Sie unter Richtlinientypen.

Unterschied zwischen SpikeArrest- und Kontingentrichtlinie

Die Kontingentrichtlinie konfiguriert die Anzahl der Anfragenachrichten, die eine Client-Anwendung im Laufe einer Stunde, eines Tages, einer Woche oder eines Monats an eine API senden kann. Die Kontingentrichtlinie erzwingt Nutzungsbeschränkungen für Clientanwendungen, die einen verteilten Zähler zur Verfügung stellen, der eingehende Anfragen erhöht.

Verwenden Sie Kontingente, um Geschäftsverträge oder SLAs mit Entwicklern und Partnern zu erzwingen, anstatt für die operative Trafficverwaltung. SpikeArrest schützt vor plötzlichen Spitzen im API-Traffic. Siehe auch Kontingente und SpikeArrest-Richtlinien vergleichen.

Videos

In diesen Videos werden Anwendungsfälle für diese Richtlinie behandelt:

Weshalb sie wichtig ist

Kontingentrichtlinie vergleichen

Element <SpikeArrest>

Definiert die SpikeArrest-Richtlinie.

Standardwert Siehe Standardrichtlinie Tab unten
Erforderlich? Optional
Typ Komplexes Objekt
Übergeordnetes Element
Untergeordnete Elemente <Identifier>
<MessageWeight>
<Rate> (Erforderlich)
<UseEffectiveCount>

Syntax

Das <SpikeArrest>-Element verwendet die folgende Syntax:

<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>

Standardrichtlinie

Das folgende Beispiel zeigt die Standardeinstellungen, wenn Sie Ihrem Ablauf in der Benutzeroberfläche eine SpikeArrest-Richtlinie hinzufügen:

<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>

Dieses Element hat folgende Attribute, die allen Richtlinien gemeinsam sind:

Attribut Standard Erforderlich? Beschreibung
name - Erforderlich

Der interne Name der Richtlinie. Der Wert des Attributs name kann Buchstaben, Ziffern, Leerzeichen, Bindestriche, Unterstriche und Punkte enthalten. Dieser Wert darf 255 Zeichen nicht überschreiten.

Optional können Sie das Element <DisplayName> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

continueOnError false Optional Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten. Legen Sie true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird. Weitere Informationen:
enabled wahr Optional Setzen Sie den Wert auf true, um die Richtlinie zu erzwingen. Legen Sie false fest, um die Richtlinie zu deaktivieren. Die Richtlinie wird nicht durchgesetzt, selbst wenn sie mit einem Ablauf verknüpft ist.
async   false Verworfen Dieses Attribut wurde verworfen.

Beispiele

Die folgenden Beispiele zeigen Möglichkeiten, wie Sie die SpikeArrest-Richtlinie verwenden können:

Beispiel 1

Im folgenden Beispiel wird die Rate auf fünf pro Sekunde festgelegt:

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

Diese Beispielrichtlinie lässt maximal 5 Anfragen pro Sekunde zu. Durch die Glättung wird maximal eine Anfrage pro 200 Millisekunden (1.000/5)-Intervall erzwungen.

Beispiel 2

Im folgenden Beispiel wird die Rate auf 12 pro Minute festgelegt:

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

Diese Beispielrichtlinie lässt maximal 12 Anfragen pro Minute bei einer Rate von einer Anfrage pro 5 Sekunden (60/12) zu. Wenn es im 5-Sekunden-Intervall mehr als eine Anfrage gibt, sind solche Anfragen zulässig (keine Glättung), wenn die Anzahl der Anfragen die konfigurierte Ratenbegrenzung von 12 pro Minute nicht übersteigt.

Beispiel 3

Im folgenden Beispiel werden Anfragen auf 12 pro Minute beschränkt (eine Anfrage ist alle fünf Sekunden bzw. 60/12 zulässig).

Darüber hinaus akzeptiert das Element <MessageWeight> einen benutzerdefinierten Wert (die Variable request_specific_weight), mit dem die Gewichtung von Nachrichten für bestimmte Anfragen angepasst wird. Hierdurch kann die Drosselung für Entitäten, die mit dem Element <Identifier> identifiziert werden, zusätzlich gesteuert werden.

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

Beispiel 4

Im folgenden Beispiel wird SpikeArrest angewiesen, nach einem Laufzeitwert zu suchen, der über die Anfrage festgelegt wurde, die als die Ablaufvariable request.header.runtime_rate übergeben wird:

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

Der Wert der Ablaufvariable muss das Format intpm oder intps haben.

Wenn Sie dieses Beispiel ausprobieren möchten, führen Sie eine Anfrage wie diese aus:

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

Normalerweise würden Sie der aufrufenden Anwendung nicht erlauben, das Ratenlimit festzulegen. Stattdessen leiten Sie das Ratenlimit von einem Wert ab, der als benutzerdefiniertes Attribut für ein API-Produkt oder für die Clientanwendung festgelegt ist.

Verweis auf untergeordnetes Element

In diesem Abschnitt werden die untergeordneten Elemente von <SpikeArrest> beschrieben.

<DisplayName>

Wird zusätzlich zum Attribut name verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen, natürlicher klingenden Namen zu versehen.

Das Element <DisplayName> ist für alle Richtlinien gleich.

Standardwert
Erforderlich? Optional. Wenn Sie <DisplayName> weglassen, wird der Wert des Attributs name der Richtlinie verwendet.
Typ String
Übergeordnetes Element <PolicyElement>
Untergeordnete Elemente Keine

Das <DisplayName>-Element verwendet die folgende Syntax:

Syntax

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

Beispiel

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

Das <DisplayName>-Element hat keine Attribute oder untergeordneten Elemente.

<Identifier>

Hier können Sie auswählen, wie die Anfragen gruppiert werden, sodass die SpikeArrest-Richtlinie basierend auf einem Element in der eingehenden Anfrage angewendet werden kann. Sie können beispielsweise Ratenbeschränkungen nach Entwickler-ID erzwingen. In diesem Fall wird für alle Anfragen, die von den Apps eines bestimmten Entwicklers gesendet werden, ein gemeinsamer SpikeArrest-Zähler verwendet. Alternativ können Sie ein Ratenlimit nach Client-ID erzwingen. In diesem Fall unterliegt jede Client-App einem separaten Ratenlimitzähler. Sie können auch auf eine Variable verweisen, die Ihr Proxy zuvor festgelegt hat. Diese Variable kann mehrere Faktoren kombinieren, z. B. die Client-ID und die IP-Adresse des Clients.

Wird in Verbindung mit dem Element <MessageWeight> für eine genauere Steuerung der Anfragedrosselung verwendet.

Wenn Sie das Element <Identifier> leer lassen, wird für alle Anfragen an diesen API-Proxy eine Ratenbegrenzung erzwungen.

Standardwert
Erforderlich? Optional
Typ String
Übergeordnetes Element <SpikeArrest>
Untergeordnete Elemente Keine

Syntax

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

Beispiel 1

Im folgenden Beispiel wird die SpikeArrest-Richtlinie pro Entwickler-ID angewendet:

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

In der folgenden Tabelle werden die Attribute von <Identifier> beschrieben:

Attribut Beschreibung Standard Präsenz
ref Gibt die Variable an, über die SpikeArrest eingehende Anfragen gruppiert. Sie können jede beliebige Ablaufvariable verwenden, um einen eindeutigen Client anzugeben, wie diejenigen, die mit der VerifyAPIKey-Richtlinie verfügbar sind. Sie können auch benutzerdefinierte Variablen mithilfe der JavaScript-Richtlinie oder der AssignMessage-Richtlinie festlegen. Erforderlich

Dieses Element wird auch in diesem Apigee-Communitybeitrag behandelt.

<MessageWeight>

Gibt die für die aktuelle Nachricht definierte Gewichtung an. Die Nachrichtengewichtung ändert die Auswirkungen einer einzelnen Anfrage auf die Berechnung der SpikeArrest-Rate. Die Nachrichtengewichtung kann eine beliebige Ablaufvariable sein, z. B. ein HTTP-Header, Abfrageparameter, Formularparameter oder Inhalt des Nachrichtentexts. Normalerweise würden Sie jedoch keine Variable verwenden, die direkt aus der eingehenden Anfrage abgeleitet wird. Stattdessen verwenden Sie eine Variable, die ein benutzerdefiniertes Attribut für ein API-Produkt oder für die Clientanwendung darstellt. Sie können auch benutzerdefinierte Variablen verwenden, die mit dynamischen Werten über die JavaScript-Richtlinie oder die AssignMessage-Richtlinie festgelegt werden. In allen Fällen muss der Wert eine positive Ganzzahl ungleich Null sein.

Wird in Verbindung mit <Identifier> verwendet, um Anfragen von bestimmten Clients oder Anwendungen drosseln zu können.

Wenn der SpikeArrest <Rate> beispielsweise 10pm ist und der Proxy eine Variable verwendet, die den Wert 2 für die Nachrichtengewichtung enthält, sind für die angegebene Kennung nur 5 Nachrichten pro Minute zulässig, da jede Anfrage als 2 zählt.

Standardwert
Erforderlich? Optional
Typ Ganzzahl
Übergeordnetes Element <SpikeArrest>
Untergeordnete Elemente Keine

Syntax

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

Variable Gewichtung

Im folgenden Beispiel werden Anfragen auf 12 pro Minute beschränkt (eine Anfrage ist alle fünf Sekunden bzw. 60/12 zulässig):

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

In diesem Beispiel akzeptiert <MessageWeight> einen benutzerdefinierten Wert (die request_specific_weight-Variable, die vermutlich zuvor berechnet wurde), der die Nachrichtengewichtung für bestimmte Anfragen anpasst. Hierdurch kann die Drosselung basierend auf der Komplexität der Anfrage zusätzlich gesteuert werden.

Statisches Gewicht

Im folgenden Beispiel werden Anfragen auf 1.000 pro Minute beschränkt und jede Anfrage erhält ein Gewicht von 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>

In der folgenden Tabelle werden die Attribute von <MessageWeight> beschrieben:

Attribut Beschreibung Präsenz Standard
ref Gibt die Ablaufvariable an, die die Nachrichtengewichtung für einen bestimmten Client enthält. Dies kann eine beliebige Ablaufvariable sein, z. B. der HTTP-Abfrageparameter, der Header oder der Nachrichteninhalt. Weitere Informationen finden Sie unter Referenz zu Ablaufvariablen. Sie können auch benutzerdefinierte Variablen mithilfe der JavaScript-Richtlinie oder der AssignMessage-Richtlinie festlegen. Erforderlich

<Rate>

Gibt die Rate an, mit der die Trafficspitzen (oder Bursts) durch Begrenzung der Anzahl der Anfragen pro Minute oder pro Sekunde eingeschränkt werden. Sie können dieses Element auch zusammen mit <Identifier> und <MessageWeight> verwenden, um den Traffic während der Laufzeit reibungslos zu drosseln. Verwenden Sie das Element <UseEffectiveCount>, um den von der Richtlinie verwendeten Algorithmus für die Ratenbegrenzung festzulegen.

Informationen zu den maximalen Ratenbegrenzungen, die Sie angeben können, finden Sie auf der Seite „Limits“ im Abschnitt zu SpikeArrest.

Standardwert
Erforderlich? Erforderlich
Typ Ganzzahl
Übergeordnetes Element <SpikeArrest>
Untergeordnete Elemente Keine

Syntax

Sie können Raten auf eine der folgenden Arten angeben:

  • Eine statische Rate, die Sie als Text des Elements <Rate> angeben.
  • Ein variabler Wert, der vom Client übergeben werden kann; Ermitteln Sie den Namen der Ablaufvariablen mithilfe des Attributs ref.
<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
</SpikeArrest>

Gültige Ratenwerte, die entweder als Variablenwert oder im Textkörper des Elements definiert sind, müssen dem folgenden Format entsprechen:

  • intps (Anzahl der Anfragen pro Sekunde, in Millisekundenintervalle geglättet)
  • intpm (Anzahl der Anfragen pro Minute, in Sekundenintervalle geglättet)

Der Wert von int muss eine positive Ganzzahl ungleich Null sein.

Beispiel 1

Im folgenden Beispiel wird die Rate auf fünf Anfragen pro Sekunde festgelegt:

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

Die Richtlinie glättet die Rate auf eine Anfrage alle 200 Millisekunden (1000/5).

Beispiel 2

Im folgenden Beispiel wird die Rate auf 12 Anfragen pro Minute festgelegt:

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

Diese Beispielrichtlinie glättet die Rate auf eine Anfrage alle fünf Sekunden (60/12).

In der folgenden Tabelle werden die Attribute von <Rate> beschrieben:

Attribut Beschreibung Präsenz Standard
ref Kennzeichnet eine Ablaufvariable, die die Rate angibt. Dies kann eine beliebige Ablaufvariable sein, z. B. ein HTTP-Abfrageparameter, Header oder Nachrichtentextinhalt oder ein Wert wie eine KVM. Weitere Informationen finden Sie unter Referenz zu Ablaufvariablen.

Sie können auch benutzerdefinierte Variablen mithilfe der JavaScript-Richtlinie oder der AssignMessage-Richtlinie verwenden.

Wenn Sie sowohl ref als auch den Text dieses Elements definieren, wird der Wert von ref angewendet und hat Vorrang, wenn die Ablaufvariable in der Anfrage festgelegt wird. Das gilt auch umgekehrt, wenn die in ref angegebene Variable nicht in der Anfrage festgelegt ist.

Beispiel:

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

Wenn der Client in diesem Beispiel keinen custom_rate-Header übergibt, beträgt die Rate für den API-Proxy 1 Anfrage pro Minute für alle Clients. Wenn der Client einen custom_rate-Header übergibt, beträgt die Ratenbegrenzung 10 Anfragen pro Sekunde für alle Clients auf dem Proxy, bis eine Anfrage ohne den custom_rate-Header gesendet wird.

Mit <Identifier> können Sie Anfragen gruppieren, um benutzerdefinierte Raten für verschiedene Clienttypen zu erzwingen.

Wenn Sie einen Wert für ref angeben, aber nicht die Rate im Text des Elements <Rate> festlegen und der Client keinen Wert übergibt, gibt die SpikeArrest-Richtlinie einen Fehler aus.

Optional

<UseEffectiveCount>

Bei diesem Element können Sie zwischen unterschiedlichen SpikeArrest-Algorithmen wählen, indem Sie den Wert auf true oder false setzen, wie unten erläutert:

wahr

Wenn true festgelegt ist, wird SpikeArrest in einer Region verteilt. Das bedeutet, dass die Anzahl der Anfragen zwischen den Message Processors (MPs) in einer Region synchronisiert wird. Außerdem wird ein Ratenbegrenzungsalgorithmus des Typs "Gleitendes Fenster" verwendet. Dieser Algorithmus bietet ein konsistentes Ratenbegrenzungsverhalten und "glättet" nicht die Anzahl der eingehenden Anfragen, die an das Back-End gesendet werden können. Wenn eine Vielzahl von Anfragen in einem kurzen Zeitintervall gesendet wird, sind sie zulässig, solange sie die im Element <Rate> festgelegte Ratenbegrenzung nicht überschreiten. Beispiel:

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

false (Standardeinstellung)

Wenn der Wert auf false (Standardeinstellung) gesetzt ist, verwendet die SpikeArrest-Richtlinie einen Algorithmus des Typs Token-Bucket, der die Traffic-Spitzen glättet, indem die von Ihnen angegebene Ratenbegrenzung in kleinere Intervalle aufgeteilt wird. Ein Nachteil dieses Ansatzes ist, dass mehrere legitime Anfragen, die über einen kurzen Zeitraum eingehen, potenziell abgelehnt werden können.

Angenommen, Sie geben eine Rate von 30pm (30 Anfragen pro Minute) ein. Beim Testen können Sie 30 Anfragen innerhalb einer Sekunde senden, sofern sie innerhalb einer Minute gesendet wurden. Aber das wird nicht durch die Richtlinie erzwungen. Wenn Sie darüber nachdenken, können 30 Anfragen innerhalb eines Zeitraums von 1 Sekunde in einigen Umgebungen als kleiner Anstieg angesehen werden.

  • Minutenraten werden in vollständige Anfragen geglättet, die in Intervallen von Sekunden zulässig sind.

    Zum Beispiel wird 30pm so geglättet:
    60 Sekunden (1 Minute) / 30pm = 2-Sekunden-Intervalle oder alle 2 Sekunden ist 1 Anfrage zulässig. Eine zweite Anfrage innerhalb von 2 Sekunden schlägt fehl. Außerdem schlägt die 31. Anfrage innerhalb einer Minute fehl.

  • Sekundenraten werden in vollständige Anfragen geglättet, die in Intervallen von Millisekunden zulässig sind.

    10ps werden z. B. so geglättet:
    1.000 Millisekunden (1 Sekunde) / 10ps = 100-Millisekunden-Intervalle bzw. 1 Anfrage alle 100 Millisekunden. Eine zweite Anfrage innerhalb von 100ms schlägt fehl. Außerdem schlägt eine 11. Anfrage innerhalb einer Sekunde fehl.

Standardwert Falsch
Erforderlich? Optional
Typ Boolesch
Übergeordnetes Element <SpikeArrest>
Untergeordnete Elemente Keine

In der folgenden Tabelle werden die Attribute des <UseEffectiveCount> -Elements beschrieben:

Attribut Beschreibung Standard Präsenz
ref Gibt die Variable an, die den Wert von <UseEffectiveCount> enthält. Dies kann eine beliebige Ablaufvariable sein, z. B. der HTTP-Abfrageparameter, der Header oder der Nachrichteninhalt. Weitere Informationen finden Sie unter Referenz zu Ablaufvariablen. Sie können auch benutzerdefinierte Variablen mithilfe der JavaScript-Richtlinie oder der AssignMessage-Richtlinie festlegen. Optional

Ablaufvariablen

Beim Ausführen einer SpikeArrest-Richtlinie werden die folgenden Ablaufvariablen ausgefüllt:

Attribut Typ Lesen/Schreiben Beschreibung Bereich beginnt
ratelimit.policy_name.allowed.count Long Schreibgeschützt: Gibt die zulässige Kontingentzahl zurück. PostClientFlow
ratelimit.policy_name.used.count Long Schreibgeschützt: Gibt das aktuell in einem Kontingentintervall verwendete Kontingent zurück. PostClientFlow
ratelimit.policy_name.available.count Long Schreibgeschützt: Gibt die verfügbare Kontingentzahl im Kontingentintervall zurück. PostClientFlow
ratelimit.policy_name.exceed.count Long Schreibgeschützt: Gibt 1 zurück, wenn das Kontingent überschritten wurde. PostClientFlow
ratelimit.policy_name.total.exceed.count Long Schreibgeschützt: Gibt 1 zurück, wenn das Kontingent überschritten wurde. PostClientFlow
ratelimit.policy_name.expiry.time Long Schreibgeschützt:

Gibt die UTC-Zeit in Millisekunden zurück. Damit wird festgelegt, wann das Kontingent abläuft und ein neues Kontingentintervall beginnt.

Wenn der Typ der Kontingentrichtlinie rollingwindow lautet, ist dieser Wert nicht gültig, da das Kontingentintervall niemals abläuft.

PostClientFlow
ratelimit.policy_name.identifier String Schreibgeschützt: Gibt den mit der Richtlinie verknüpften (Client-)ID-Verweis zurück PostClientFlow
ratelimit.policy_name.class String Schreibgeschützt: Gibt die der Client-ID zugeordnete Klasse zurück PostClientFlow
ratelimit.policy_name.class.allowed.count Long Schreibgeschützt: Gibt die in der Klasse definierte zulässige Kontingentzahl zurück PostClientFlow
ratelimit.policy_name.class.used.count Long Schreibgeschützt: Gibt das verwendete Kontingent innerhalb einer Klasse zurück. PostClientFlow
ratelimit.policy_name.class.available.count Long Schreibgeschützt: Gibt die verfügbare Kontingentzahl in der Klasse zurück PostClientFlow
ratelimit.policy_name.class.exceed.count Long Schreibgeschützt: Gibt die Anzahl der Anfragen zurück, die das Limit in der Klasse im aktuellen Kontingentintervall überschreiten. PostClientFlow
ratelimit.policy_name.class.total.exceed.count Long Schreibgeschützt: Gibt die Gesamtzahl der Anfragen zurück, die das Limit in der Klasse aller Kontingentintervalle überschreiten. Es ist also die Summe von class.exceed.count für alle Kontingentintervalle. PostClientFlow
ratelimit.policy_name.failed Boolesch Schreibgeschützt:

Gibt an, ob die Richtlinie fehlgeschlagen ist ("true" oder "false").

PostClientFlow

Weitere Informationen finden Sie unter Referenz zu Ablaufvariablen.

Fehlerreferenz

In diesem Abschnitt werden die zurückgegebenen Fehlercodes und Fehlermeldungen beschrieben, die von Apigee festgelegt werden, wenn die Richtlinie einen Fehler auslöst. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.

Laufzeitfehler

Diese Fehler können bei Ausführung der Richtlinie auftreten.

Fehlercode HTTP-Status Ursache Diverse Fehlerkorrekturen
policies.ratelimit.FailedToResolveSpikeArrestRate 500 Dieser Fehler tritt auf, wenn der Verweis auf die Variable mit der Rateneinstellung im Element <Rate> nicht zu einem Wert in der SpikeArrest-Richtlinie aufgelöst werden kann. Dieses Element ist obligatorisch und wird verwendet, um die Arrestrate im Format intpm oder intps anzugeben.
policies.ratelimit.InvalidMessageWeight 500 Dieser Fehler tritt auf, wenn der für das Element <MessageWeight> angegebene Wert über eine Ablaufvariable ungültig ist (ein nicht ganzzahliger Wert).
policies.ratelimit.SpikeArrestViolation 429 Das Ratenlimit wurde überschritten.

Bereitstellungsfehler

Diese Fehler können auftreten, wenn Sie einen Proxy mit dieser Richtlinie bereitstellen.

Fehlername Ursache Diverse Fehlerkorrekturen
InvalidAllowedRate Wenn die Spike Arrest-Rate im <Rate>-Element der SpikeArrest-Richtlinie keine Ganzzahl ist oder die Rate weder ps noch pm enthält nicht als Suffix zurückgegeben, schlägt die Bereitstellung des API-Proxys fehl.

Fehlervariablen

Diese Variablen werden bei Laufzeitfehlern festgelegt. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen.

Variablen Wo Beispiel
fault.name="fault_name" fault_name ist der Name des Fehlers, der in der obigen Tabelle Laufzeitfehler aufgeführt ist. Der Fehlername ist der letzte Teil des Fehlercodes. fault.name Matches "SpikeArrestViolation"
ratelimit.policy_name.failed policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. ratelimit.SA-SpikeArrestPolicy.failed = true

Beispiel für eine Fehlerantwort

Im Folgenden sehen Sie ein Beispiel für eine Fehlerantwort:

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

Beispiel für eine Fehlerregel

Unten sehen Sie ein Beispiel für eine Fehlerregel zum Verarbeiten eines SpikeArrestViolation-Fehlers:

<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>

Der aktuelle HTTP-Statuscode zum Überschreiten einer Ratenbegrenzung, die von einer Kontingent- oder SpikeArrest-Richtlinie festgelegt wurde, lautet 429 (Zu viele Anfragen).

Schemas

Jeder Richtlinientyp wird durch ein XML-Schema (.xsd) definiert. Zu Referenzzwecken sind Richtlinienschemas auf GitHub verfügbar.

Weitere Informationen