Begränsa samtalsfrekvens per prenumeration

GÄLLER FÖR: Alla API Management-nivåer

Principen rate-limit förhindrar API-användningstoppar per prenumeration genom att begränsa anropsfrekvensen till ett angivet tal per angiven tidsperiod. När samtalsfrekvensen överskrids får anroparen en 429 Too Many Requests svarsstatuskod.

Information om skillnaden mellan hastighetsgränser och kvoter finns i Hastighetsgränser och kvoter.

Varning

På grund av begränsningsarkitekturens distribuerade karaktär är hastighetsbegränsningen aldrig helt korrekt. Skillnaden mellan det konfigurerade och det verkliga antalet tillåtna begäranden varierar beroende på begärandevolymen och hastigheten, svarstiden i serverdelen och andra faktorer.

Kommentar

Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.

Principuttryck

<rate-limit calls="number" renewal-period="seconds"  retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-calls-header-name="header name"  
        remaining-calls-variable-name="policy expression variable name"
        total-calls-header-name="header name">
    <api name="API name" id="API id" calls="number" renewal-period="seconds" >
        <operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
    </api>
</rate-limit>

Attribut

Attribut beskrivning Obligatoriskt Standardvärde
Samtal Det maximala totala antalet anrop som tillåts under tidsintervallet som anges i renewal-period. Principuttryck tillåts inte. Ja Ej tillämpligt
förnyelseperiod Längden i sekunder för skjutfönstret där antalet tillåtna begäranden inte ska överskrida det värde som anges i calls. Högsta tillåtna värde: 300 sekunder. Principuttryck tillåts inte. Ja Ej tillämpligt
retry-after-header-name Namnet på en anpassad svarsrubrik vars värde är det rekommenderade återförsöksintervallet i sekunder efter att den angivna anropsfrekvensen har överskridits. Principuttryck tillåts inte. Nej Retry-After
retry-after-variable-name Namnet på en variabel som lagrar det rekommenderade återförsöksintervallet i sekunder efter att den angivna anropsfrekvensen har överskridits. Principuttryck tillåts inte. Nej Ej tillämpligt
remaining-calls-header-name Namnet på en svarsrubrik vars värde efter varje principkörning är antalet återstående anrop som tillåts för tidsintervallet som anges i renewal-period. Principuttryck tillåts inte. Nej Ej tillämpligt
remaining-calls-variable-name Namnet på en variabel som efter varje principkörning lagrar antalet återstående anrop som tillåts för det tidsintervall som anges i renewal-period. Principuttryck tillåts inte. Nej Ej tillämpligt
total-calls-header-name Namnet på en svarsrubrik vars värde är det värde som anges i calls. Principuttryck tillåts inte. Nej Ej tillämpligt

Element

Element Description Obligatoriskt
api Lägg till ett eller flera av dessa element för att införa en anropsfrekvensgräns för API:er i produkten. Prisgränser för produkt- och API-anrop tillämpas oberoende av varandra. API kan refereras antingen via name eller id. Om båda attributen anges id används och name ignoreras. Nej
operation Lägg till ett eller flera av dessa element för att införa en gräns för anropsfrekvens för åtgärder i ett API. Gränser för produkt-, API- och åtgärdsanrop tillämpas oberoende av varandra. Åtgärden kan refereras antingen via name eller id. Om båda attributen anges id används och name ignoreras. Nej

api-attribut

Attribut beskrivning Obligatoriskt Standardvärde
name Namnet på API:et för vilket hastighetsgränsen ska tillämpas. Antingen name eller id måste anges. Ej tillämpligt
id ID:t för API:et för vilket hastighetsgränsen ska tillämpas. Antingen name eller id måste anges. Ej tillämpligt
Samtal Det maximala totala antalet anrop som tillåts under tidsintervallet som anges i renewal-period. Principuttryck tillåts inte. Ja Ej tillämpligt
förnyelseperiod Längden i sekunder för skjutfönstret där antalet tillåtna begäranden inte ska överskrida det värde som anges i calls. Högsta tillåtna värde: 300 sekunder. Principuttryck tillåts inte. Ja Ej tillämpligt

åtgärdsattribut

Attribut beskrivning Obligatoriskt Standardvärde
name Namnet på den åtgärd för vilken hastighetsgränsen ska tillämpas. Antingen name eller id måste anges. Ej tillämpligt
id ID:t för den åtgärd för vilken hastighetsgränsen ska tillämpas. Antingen name eller id måste anges. Ej tillämpligt
Samtal Det maximala totala antalet anrop som tillåts under tidsintervallet som anges i renewal-period. Principuttryck tillåts inte. Ja Ej tillämpligt
förnyelseperiod Längden i sekunder för skjutfönstret där antalet tillåtna begäranden inte ska överskrida det värde som anges i calls. Högsta tillåtna värde: 300 sekunder. Principuttryck tillåts inte. Ja Ej tillämpligt

Användning

Användningsanteckningar

  • Den här principen kan bara användas en gång per principdefinition.
  • Den här principen tillämpas endast när ett API används med hjälp av en prenumerationsnyckel.
  • Frekvensgränsantal i en lokalt installerad gateway kan konfigureras för att synkronisera lokalt (bland gatewayinstanser mellan klusternoder), till exempel via Helm-diagramdistribution för Kubernetes eller med hjälp av Distributionsmallar för Azure-portalen. Frekvensgränsantal synkroniseras dock inte med andra gatewayresurser som konfigurerats i API Management-instansen, inklusive den hanterade gatewayen i molnet. Läs mer

Exempel

I följande exempel är gränsen per prenumeration 20 anrop per 90 sekunder. Efter varje principkörning lagras de återstående anropen som tillåts under tidsperioden i variabeln remainingCallsPerSubscription.

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Mer information om hur du arbetar med principer finns i: