Ana içeriğe geç

Rate Limiting

Türkçe karşılığı
hız sınırlama, istek sınırlama
Okunuşu
reyt limiting

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/rate-limiting

Kısaca

Rate limiting, istemcinin belli bir sürede yapabileceği istek sayısını sınırlayıp sunucuyu ya da API'yi kötüye kullanımdan ve aşırı yükten koruyan tekniktir.

Rate limiting nedir?

Rate limiting, bir servisin ne sıklıkla çağrılabileceğini denetler. API anahtarı başına dakikada 100 istek ya da IP adresi başına dakikada 5 giriş denemesi gibi bir kural her istekte kontrol edilir; bir istemci sınırı aştığında, zaman aralığı sıfırlanana kadar sonraki istekler reddedilir. Web'de sunucu genellikle 429 Too Many Requests HTTP durum koduyla yanıt verir.

Kuyruk ne kadar uzarsa uzasın dakikada yalnızca belirli sayıda kişiyi içeri alan bir kulüp görevlisi gibi çalışır. Rate limit'ler sunucuları trafik artışlarından, döngüye girmiş hatalı istemcilerden, agresif veri kazımadan (scraping) ve kaba kuvvetle parola tahmininden korur; ayrıca kapasitenin müşteriler arasında adil paylaşılmasına yardımcı olur. API gateway'lerde, reverse proxy'lerde, CDN'lerde veya uygulama içindeki middleware'de uygulanır; her sunucu aynı sayıyı görsün diye sayaçlar çoğunlukla Redis gibi hızlı, paylaşılan bir depoda tutulur.

Yaygın algoritmalar şunlardır: istekleri takvim dakikası başına sayan sabit pencere (fixed window); son 60 saniyedeki istekleri sayan kayan pencere (sliding window); ve her istemcinin sabit bir hızla token dolan bir kovasının olduğu, her isteğin bir token harcadığı token bucket. Token bucket, ortalama hızı korurken kısa ani artışlara izin verdiği için popülerdir.

Rate limiting, throttling ile yakından ilişkilidir ve iki terim sıklıkla birbirinin yerine kullanılır; ancak throttling bazen istekleri reddetmek yerine yavaşlatmak ya da kuyruğa almak anlamına gelir. Özenli API'ler sınırlarını istemcilere Retry-After veya X-RateLimit-Remaining gibi yanıt başlıklarıyla bildirir; özenli istemciler de 429 aldıklarında bekleyip üstel geri çekilme (exponential backoff) ile yeniden dener, yani her başarısız denemeden sonra daha uzun bekler.

Bir bakışta

Saniyede bir token dolan bir token bucket'ta, aynı anda dört istek geldiğinde üç token vardır: 1., 2. ve 3. istekler birer token harcayıp 200 OK alır, 4. istek ise kovayı boş bulur ve 429 Too Many Requests alır.saniyede +1 tokenToken bucketİstek 1token200 OKİstek 2token200 OKİstek 3token200 OKİstek 4boş429 Too Many Requests
Her istek bir token harcar ve token'lar sabit bir hızla geri dolar; böylece kısa ani artışlar geçer ama ortalama hız hiçbir zaman dolum hızını aşamaz.

Önemli noktalar

  • Rate limiting, bir istemcinin belirli bir sürede yapabileceği istek sayısını sınırlar.
  • Sınırı aşan istemciler genellikle HTTP 429 Too Many Requests alır.
  • Sınırlar tipik olarak API anahtarı, kullanıcı veya IP adresi başına uygulanır.
  • Yaygın algoritmalar sabit pencere, kayan pencere ve token bucket'tır.
  • İstemciler Retry-After başlığına uymalı ve exponential backoff ile yeniden denemelidir.

Örnek

Express.js'te basit bir rate limiting middleware'ijavascript
// Fixed-window limiter: 100 requests per minute per IP (in memory, one server)
const LIMIT = 100;
const WINDOW_MS = 60_000;
const hits = new Map(); // ip -> { count, start }

function rateLimit(req, res, next) {
  const now = Date.now();
  let entry = hits.get(req.ip);
  if (!entry || now - entry.start >= WINDOW_MS) {
    entry = { count: 0, start: now }; // start a new window
    hits.set(req.ip, entry);
  }
  if (++entry.count > LIMIT) return res.status(429).send("Too Many Requests");
  next();
}

Sık sorulan sorular

HTTP 429 Too Many Requests ne anlama gelir?

Sunucunun belirli bir sürede izin verdiğinden daha fazla istek gönderdiğiniz anlamına gelir. Yeniden denemeden önce bekleyin; yanıt Retry-After başlığı içeriyorsa ideal olarak orada belirtilen saniye kadar.

Rate limiting ile throttling arasındaki fark nedir?

Sıklıkla eş anlamlı kullanılırlar. Bir ayrım yapıldığında rate limiting sınırı aşan istekleri reddeder; throttling ise onları yavaşlatır ya da kuyruğa alır, böylece istekler kontrollü bir hızda işlenir.

Token bucket algoritması nedir?

Her istemciye sabit bir hızla token dolan bir kova verilir ve her istek bir token harcar. Kova boşaldığında istekler reddedilir; böylece kısa ani artışlara izin verilirken ortalama hız sınırın altında kalır.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar