Rate Limiting Nedir? Uygulama Geliştiriciler İçin Sade Rehber
Rate limiting, birinin bir sisteme belirli bir sürede yapabileceği istek sayısını sınırlayan bir kuraldır — örneğin dakikada 5 giriş denemesi ya da saatte 100 API çağrısı. Sınıra ulaşıldığında, zaman penceresi sıfırlanana kadar sonraki istekler reddedilir (genellikle 429 Too Many Requests hata koduyla). Uygulamaları kötüye kullanımdan korur, tek bir yoğun kullanıcının herkesi yavaşlatmasını önler ve kontrolden çıkan maliyetleri durdurur.
Rate limiting ile iki taraftan karşılaşırsınız: çağırdığınız servisler sizi sınırlar, kendi uygulamanız ise kullanıcılarını sınırlamalıdır.
Yapay zekayla inşa ederken rate limiting neden önemlidir
Yapay zeka ile inşa edilen uygulamalar çoğu zaman ücretli servislere bağlanır — yapay zeka modelleri, e-posta, SMS, haritalar — ve her çağrının bir maliyeti vardır. Bu yüzden rate limiting hem bir güvenlik özelliği hem de bir bütçe özelliğidir.
- Maliyet kontrolü. Uygulamanızda bir “yapay zekaya sor” kutusu varsa ve bir sınır yoksa, bir bot gece boyunca binlerce istek gönderebilir. Her birinin bedelini siz ödersiniz.
- Güvenlik. Giriş formunda bir sınır yoksa, bir saldırgan bir hesap için binlerce şifre deneyebilir. Dakikada birkaç denemelik bir sınır bunu pratik olmaktan çıkarır.
- Çevrimiçi kalmak. Hatalı çalışan tek bir script — bazen kendi kodunuzun bir döngüye takılması — veritabanınızı zorlayıp uygulamayı çökertebilir.
- Diğer servislerin sınırlarına uymak. Uygulamanız dışarıdaki bir API’yi çok sık çağırırsa, 429 hatalarını siz alırsınız ve özellikler kullanıcılarınız için bozulur.
Yapay zeka inşa ediciler istediğiniz şeyi inşa eder. Sınırlardan bahsetmezseniz, çoğu zaman atlanırlar.
Günlük hayattan bir benzetme
Bir kahve dükkânının “ücretsiz tekrar” politikasını düşünün: “Her müşteri ziyaret başına bir ücretsiz tekrar.”
- Kimsenin kahvenin tadını çıkarmasını engellemez.
- Bir kişinin tüm gün tezgâhın başında durup tüm ofis için termosunu doldurmasını engeller.
- Biri dördüncü tekrarı istediğinde, barista nazikçe “şimdilik olmaz” der — işte bu
429’dur.
İyi bir rate limit, normal müşteriler için görünmezdir ve yalnızca olağandışı bir şey yapan birinin dikkatini çeker.
Rate limiting nasıl çalışır
Bir rate limiter üç şeye ihtiyaç duyar:
| Parça | Yanıtladığı soru | Örnekler |
|---|---|---|
| Kim | Kimin istekleri sayılıyor? | Kullanıcı hesabı başına, IP adresi başına, API anahtarı başına |
| Ne kadar | Sınır ne? | 5, 60, 1.000 istek |
| Hangi süre içinde | Hangi pencere içinde? | Saniye, dakika, saat, gün başına |
Bir istek geldiğinde uygulama o “kim” için sayacı kontrol eder. Sınırın altındaysa istek geçer ve sayaç artar. Sınırın üstündeyse istek reddedilir.
Sayma için birkaç yaygın yöntem vardır:
| Yöntem | Nasıl çalışır | Ödünleşim |
|---|---|---|
| Sabit pencere | Sayaç saate göre sıfırlanır — ör. her dakika başında | Basittir, ama iki pencerenin kesiştiği noktada ani bir artışa izin verir |
| Kayan pencere | Şu andan geriye doğru son 60 saniyeye bakar | Daha düzgündür, hesaplaması biraz daha fazla iştir |
| Token bucket | Her kullanıcının, sabit hızla dolan bir kovası vardır; her istek bir token harcar | Ortalamayı sabit tutarken kısa patlamalara izin verir |
Sayaçların hızlı ve paylaşılan bir yerde tutulması gerekir. Tek bir küçük sunucuda bellek yeterlidir. Uygulama birkaç makinede çalışmaya başladığında sayaç genellikle Redis gibi paylaşılan bir depoda ya da veritabanında tutulur; aksi halde her makine kendi sayacını tutar ve gerçek sınır birkaç kat yükselir.
Rate limit’e takılmış bir yanıt nasıl görünür
Bir istek sınırı aşarsa, düzgün çalışan bir API şunu döndürür:
429 Too Many Requestsdurum kodu.- Çoğu zaman, kaç saniye beklemeniz gerektiğini söyleyen bir
Retry-Afterbaşlığı. - Bazen sınırınızı ve bu pencerede kaç isteğiniz kaldığını gösteren başlıklar (adlar sağlayıcıya göre değişir).
Uygulamanız bir 429’a, beklemek ve daha sonra yeniden denemekle yanıt vermelidir — ideal olarak exponential backoff ile; yani her başarısız denemeden sonra biraz daha uzun beklemek (1 saniye, sonra 2, sonra 4) ve servise art arda yüklenmemek.
Uygulamalı örnek: bir yapay zeka yazım asistanı
Kullanıcıların metin yapıştırıp yapay zekadan yeniden yazılmış bir sonuç aldığı bir uygulama inşa ettiğinizi düşünün.
Sınır olmadan: Biri gece boyunca 20.000 istek gönderen bir script yazar. Yapay zeka sağlayıcınızın faturası fırlar ve hesabınız sağlayıcının kendi rate limit’ine takılır; gerçek kullanıcılar sabah boyunca hatalar görür.
Makul sınırlarla:
- Giriş yapmış kullanıcı başına: Ücretsiz planda saatte 30 yeniden yazım, ücretli planda 300. Sınır aşıldığında kullanıcı şunu görür: “Bu saatlik sınıra ulaştınız. 12 dakika sonra tekrar deneyin ya da yükseltin.”
- Kayıt formundaki IP adresi başına: Saatte 5 kayıt, kullanıcı başına sınırı aşmak için binlerce ücretsiz hesap açan botları durdurmak için.
- Yapay zeka sağlayıcınızın panelinde ayarlanmış bir harcama limiti, her şey başarısız olursa son savunma hattı olarak.
- Sağlayıcının sınırlarını yönetmek: Yapay zeka sağlayıcısı 429 dönerse, sunucunuz bir ya da iki kez bekleyip yeniden dener, sonra kullanıcıya “meşgul, lütfen tekrar deneyin” gibi nazik bir mesaj gösterir.
Sınırlar sunucuda kontrol edilir. Yalnızca tarayıcıda var olan bir sınır — örneğin 30 tıklamadan sonra düğmeyi devre dışı bırakmak — API’nizi doğrudan çağıran herkes tarafından aşılabilir.
Temel terimler
| Terim | Anlamı |
|---|---|
| Rate limit | Bir zaman penceresinde izin verilen en fazla istek sayısı. |
| Kota | Genellikle günlük ya da aylık, bazen ücretli bir plana bağlı daha büyük bir hak. |
| 429 | “Çok fazla istek” anlamına gelen HTTP durum kodu. |
| Retry-After | Yeniden denemeden önce ne kadar beklenmesi gerektiğini söyleyen yanıt başlığı. |
| Throttling | Sınırı aşan istekleri yavaşlatmak ya da reddetmek. Çoğu zaman eş anlamlı olarak kullanılır. |
| Exponential backoff | Yeniden denemeler arasında giderek daha uzun bekleme. |
| Burst | Aynı anda gelen kısa süreli yoğun istek artışı. |
| Brute-force saldırısı | Biri çalışana kadar çok sayıda şifre ya da kod denemek. |
Yaygın yanlış anlamalar
- “Rate limiting yalnızca büyük uygulamalar içindir.” Küçük uygulamalar da hedeflenir, çünkü botlar açık formlar ve yapay zeka uç noktaları için tüm interneti tarar. Kötüye kullanımın maliyeti uygulamanızın büyüklüğüne bağlı değildir.
- “Düğmeyi gizlemek yeter.” Tarayıcı tarafındaki sınırlar bir nezaket işaretidir, koruma değildir. Gerçek sınırlar sunucuda uygulanmalıdır.
- “IP başına sınırlar her zaman adildir.” Birçok kişi aynı IP adresini paylaşabilir — bir ofis, bir okul, bir mobil ağ. İnsanlar giriş yaptığında kullanıcı başına sınırlar daha adildir.
- “429, servisin bozuk olduğu anlamına gelir.” Servisi çok sık çağırdığınız anlamına gelir. Kodunuzda döngüleri kontrol edin ve sık değişmeyen sonuçları önbelleğe alın — bkz. önbellekleme nedir.
- “Rate limiting harcama limitinin yerini alır.” İkisini de kullanın. Uygulamanızdaki sınırların da hataları olabilir; sağlayıcının harcama limiti son güvencenizdir.
Yapay zeka inşa edicinizden ne istemelisiniz
- “Giriş, kayıt, şifre sıfırlama ve yapay zeka uç noktasına sunucu tarafında rate limiting ekle. Makul sınırlar öner.”
- “Giriş yapmış her kullanıcıyı saatte [N] yapay zeka isteğiyle sınırla ve sınıra ulaşıldığında bekleme süresini gösteren net bir mesaj göster.”
- “Dış bir API 429 dönerse, en fazla 3 kez exponential backoff ile yeniden dene, sonra nazik bir hata göster.”
- “Rate limit sayaçları nerede saklanıyor? Uygulama birden fazla makinede çalışırsa yine çalışır mı?”
- “Bir kullanıcı ya da IP bir sınıra her ulaştığında kaydet ki kötüye kullanımı fark edebileyim.”
- “Bu uygulama hangi dış servisleri çağırıyor ve bunların rate limit’leri nedir?”
Mythex’te rate limiting
Mythex’in dokümantasyonu yapay zeka özellikleri için bu konuda açıktır: inşa ettiğiniz uygulamalardaki rate limitler, güvenlik ve maliyet kontrolleri sizin tasarlayacağınız şeylerdir — bkz. Bir yapay zeka uygulaması inşa et. Özelliği istediğiniz mesajın içinde sınırları da eklemesini agent’tan isteyin. Pro’da, trafik yoğun olduğunda yayınlanmış bir servis üç makineye kadar çalışabilir (bkz. Barındırma limitleri); bu yüzden sayaçların tek bir sunucunun belleğinde değil, veritabanında tutulmasını isteyin.
İlgili okumalar: API nedir, LLM API’leri nasıl kullanılır ve yapay zeka ile inşa edilmiş uygulamalar için güvenlik kontrol listesi.
Sorular
Rate limiting basitçe ne demek?
Rate limiting, bir kullanıcının, cihazın ya da uygulamanın belirli bir sürede yapabileceği istek sayısını sınırlayan bir kuraldır. Örneğin dakikada 5 giriş denemesi ya da saatte 100 API çağrısı gibi. Sınırı aşan istekler, zaman penceresi sıfırlanana kadar reddedilir.
429 Too Many Requests hatası ne anlama gelir?
HTTP 429 durum kodu, çok kısa sürede çok fazla istek gönderdiğiniz ve bir rate limit’e takıldığınız anlamına gelir. Yanıt çoğu zaman ne kadar beklemeniz gerektiğini söyleyen bir Retry-After başlığı içerir. Çözüm, yavaşlamak, bir süre bekleyip yeniden denemek ya da uygulamanızın servisi ne sıklıkla çağırdığını azaltmaktır.
Yapay zeka destekli uygulamamın rate limiting’e neden ihtiyacı var?
Her yapay zeka isteği token olarak size para maliyeti getirir. Sınır olmazsa, tek bir kullanıcı ya da bir bot binlerce istek gönderip büyük bir fatura oluşturabilir ya da sağlayıcı kotanızı tüketip özelliği herkes için kapatabilir. Kullanıcı başına sınırlar maliyetleri öngörülebilir tutar.
Rate limiting ile throttling aynı şey mi?
Birbiriyle yakından ilişkilidirler ve çoğu zaman birbirinin yerine kullanılırlar. Rate limiting genellikle sınırı aşan istekleri reddetmek anlamına gelir; throttling ise istekleri doğrudan reddetmek yerine yavaşlatmak ya da kuyruğa almak anlamına da gelebilir.
Rate limiting DDoS saldırılarını durdurur mu?
Tek tek kullanıcılardan ya da IP adreslerinden gelen küçük taşkınlara ve kötüye kullanıma karşı yardımcı olur; ama büyük, dağıtık bir saldırı aynı anda çok sayıda adresten gelir. Bunlara karşı koruma genellikle trafik uygulamanıza ulaşmadan önce ağ ya da CDN seviyesinde sağlanır.