Uw openbare API explodeert in het verkeer na een virale integratie. De eerste oproepen komen van een partneraggregator: 200 legitieme verzoeken/s. Uw algemene limiet van 100 req/s per IP blokkeert dit. Ondertussen knabbelt een bot die over 500 free-tier IP's is verdeeld aan het /search-eindpunt zonder zich zorgen te maken.
Slecht ontworpen snelheidsbeperking beschermt de server tegelijkertijd tegen slechte en goede clients.
Duidelijke doelstellingen
Bescherm CPU/DB, garandeer eerlijkheid tussen huurders, genereer premium derde partijen en absorbeer korte uitbarstingen. Het gaat niet alleen om beveiliging: een vastberaden aanvaller omzeilt fundamentele grenzen.
Algoritmen
| Algo | Gedrag | Gebruiksscenario's |
|---|---|---|
| Vast raam | Eenvoudige, scherpe keuzes | Laag volume intern |
| Schuifraam | Eerlijker | Openbare API |
| Tokenbucket | Gecontroleerde burst toestaan | B2B-partners |
| Lekkende emmer | Regelmatige uitgave | Wachtrijen |
Redis + Lua of beheerde gatewaydiensten (Cloudflare, Kong, AWS API GW).
Quotumsleutels
Hiërarchie: API-sleutel → plan → gevoelig eindpunt. IP als laatste redmiddel. Geauthenticeerd versus anoniem: afzonderlijke pools.
Tijdelijke witte lijst voor partnerlancering met contractueel ondertekend plafond.
UX aan de clientzijde
Documentlimieten in OpenAPI. Voorbeelden van exponentiële uitstel + jitter. Een expliciete 429 is beter dan een stille time-out.
Overconsumptie: 402/403 zakelijk versus 429 technisch – maak onderscheid tussen quotafacturering en overbelasting.
Belastingtesten
Simuleer burst 3x limiet, controleer herstel < 1 min. Meet valse positieven over bedrijfs-IP. Pas aan na echte waarneembaarheid, niet alleen in spreadsheets.
Kalibreer zonder te straffen
Begin met het meten van het basisverkeer over 14 dagen: p50/p95/p99 per eindpunt en per API-sleutel. Stel de limiet in op 2× p99 van de grootste legitieme client op een duur eindpunt.
Implementeer een tokenbucket met 2× aanhoudende burst. Kondig headers aan voordat u afdwingen inschakelt.
Creëer een lage “sandbox”-laag voor dev-sleutels en een contractuele “productie”-laag. Oververkoop zonder gedocumenteerd quotum = supporttickets.
Houd rekening met het 429-percentage: als >1% legitieme verzoeken is, is de limiet te laag. Als scraper ongewijzigd blijft, slecht gerichte limiet (IP versus sleutel).
Controleer na elke grote klant die zich heeft aangemeld: hun verkeersprofiel verandert de mediaan voor iedereen als deze slecht geïsoleerd is.
Maatvoering met reële cijfers
Exporteer zeven dagen aan toegangslogboeken: tel verzoeken per minuut per API-sleutel en per route. De globale limiet “1000 req/min” verbergt een /export eindpunt dat alleen al 800 genereert. Beperken op gevoelige route: authenticatie, zoeken, exporteren, inkomende webhook.
Respectvolle crawlers (Googlebot) versus agressieve scrapers: alleen al de IP-snelheidslimiet bestraft de eerste achter zakelijke NAT. Combineer gedrag (geen User-Agent, verdachte eindpuntreeks) met sleutelquota.
Communiceer een migratieschema: “Limiet vanaf 1 oktober afdwingen” met header-preview-modus vóór harde blokkering. Partner-SDK's integreren Retry-After; homescripts nee - waarschuw.
Op een low-budget VPS is lokale Redis voor tellers voldoende tot een paar duizend req/s. Daarnaast voorkomt de edge CDN-snelheidslimiet dat de teller uw eigen DDoS op Redis wordt.
B2B-partners vragen vaak ‘geen limiet’ – reageren met gecodeerde contractuele quota + burst + prijsoverschrijding, en niet met de afwezigheid van een limiet.
Onderscheid 429 technisch versus 402 facturering: door de twee in hetzelfde API-document te combineren, ontstaan eindeloze supporttickets.
Grafiekdashboard: topconsumenten per sleutel: identificeert geverifieerde scrapers voordat ze een beveiligingsincident worden.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Randsnelheidslimiet
Redis lokale VPS en vervolgens CDN edge voorbij duizenden req/s.
Beslis en ga vooruit zonder blinde vlek
- Meet veertien dagen basislijn — p50/p95/p99 per eindpunt en per API-sleutel.
- Stel de limiet in op 2x de p99 van de grootste legitieme client op het duurste eindpunt.
- Tokenbucket met burst: kondig RateLimit-headers aan voordat u de handhaving activeert.
- Sandbox en productie van derden — gedocumenteerde contractuele quota om supporttickets te voorkomen.
- Beoordeling na elke grote klant: het verkeersprofiel verandert de mediaan voor iedereen als het slecht geïsoleerd is.
Grootte CPU en netwerk via de overzicht, de vergelijker en de blog API.
Veelgestelde vragen
Is beperken op IP voldoende?
Nee voor clients achter NAT of CDN. Geef de voorkeur aan API-sleutel + IP als fallback, met quota's per tenant.
Tokenbucket of vast venster?
Token-emmer verzacht uitbarstingen. Vast venster creëert klifeffecten aan het einde van het venster; schuifraam kost meer, maar is eerlijker.
Welke header moet ik retourneren?
429 + Opnieuw proberen na + X-RateLimit-Remaining/Limit/Reset helpt client-SDK's netjes terug te gaan.
Tarieflimiet op rand of app?
Edge (CDN, API-gateway) stopt de overstroming vroegtijdig. App handhaaft fijne zakelijke limieten (kosten per eindpunt).
Publiceer uw limieten in het document vóór de volgende lancering: goede klanten plannen, bots niet.
