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
- Principavsnitt: inkommande
- Principomfattningar: produkt, API, åtgärd
- Gatewayer: klassisk, v2, förbrukning, lokalt installerad, arbetsyta
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 Azure Portal distributionsmallar. 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>
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Skapa principer med Microsoft Copilot i Azure