İletişim

429 Too Many Requests Nedir?

Kısa tanım

429 Too Many Requests, istemcinin belirli bir süre içinde çok fazla istek gönderdiğini, yani bir hız sınırına takıldığını bildiren HTTP durum kodudur. RFC 6585 ile tanımlanmıştır ve yanıt, ne kadar beklenmesi gerektiğini belirten Retry-After başlığını içerebilir. Google'ın tarayıcıları 429'u sunucunun aşırı yüklendiğine dair bir işaret ve sunucu hatası olarak değerlendirip taramayı yavaşlatır.

Diğer adları: HTTP 429, 429 hatası, istek sınırı aşıldı, rate limit exceeded

İstek hızı limit eşiğini aştığında sunucunun 429 Too Many Requests ve Retry-After başlığı döndürdüğünü gösteren ölçek

Retry-After: istemciye ne zaman döneceğini söylemek

429, hız sınırlamanın görünen yüzüdür. RFC 6585, yanıtın durumu açıklamasını ve isteğe bağlı olarak Retry-After başlığıyla ne kadar beklenmesi gerektiğini söylemesini önerir. Bu değer saniye cinsinden bir sayı ya da bir HTTP tarihi olabilir:

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 120

{"error": "rate_limited", "detail": "Dakikada en fazla 60 istek"}

Standart, sunucunun istemciyi nasıl tanıyacağını ya da istekleri nasıl sayacağını belirlemez; sınır IP adresine, API anahtarına, kullanıcı hesabına ya da tek bir uç noktaya göre konabilir. Bir kural ise kesindir: 429 yanıtları önbelleğe alınmamalıdır.

İstemci tarafında doğru davranış, Retry-After varsa ona uymak, yoksa beklemeyi her denemede katlayarak artırmak ve araya rastgele bir sapma eklemektir. Aynı anda yüzlerce istemcinin aynı saniyede yeniden denemesi, sınırın koruduğu yükü yeniden oluşturur. Yeniden denenen yazma işlemlerinin iki kez uygulanmaması için idempotency anahtarları kullanılmalıdır.

Googlebot 429 görünce ne yapar?

Google, 429'u diğer 4xx kodlarından ayırır: sunucunun aşırı yüklendiğine dair bir işaret sayar ve sunucu hatası gibi değerlendirir. Tarayıcılar taramayı geçici olarak yavaşlatır; sunucu yeniden 2xx yanıtlar vermeye başlayınca tarama hızı kademeli olarak artar. Google'ın belgeleri Googlebot'un Retry-After değerine uyduğunu belirtmez, bu yüzden başlığa güvenip uzun bir bekleme süresi istemek tarama üzerinde öngörülebilir bir kontrol sağlamaz.

Google, Googlebot taramasını acil olarak azaltmanız gerekiyorsa 500, 503 ya da 429 döndürmeyi önerir, ama bunun 1–2 günü geçmemesini ister. Aynı URL bu kodları birkaç gün boyunca döndürürse dizinden düşebilir; uzun süren durumlarda Google taramayı kalıcı olarak yavaşlatabilir ya da durdurabilir. Bu, büyük sitelerde doğrudan tarama bütçesi kaybı demektir.

Yanlış hedefe 429: CDN ve WAF kuralları

Sitelerin çoğu 429'u bilinçli olarak üretmez; CDN ya da güvenlik katmanındaki bir hız kuralı üretir. Bir tarayıcının kısa sürede çok sayıda sayfa istemesi, kötü niyetli bir botla aynı görünebilir. Kuralları gerçek kullanıcı davranışına göre ayarlamak, doğrulanmış arama motoru tarayıcılarını ayrı ele almak ve bunu user-agent'a değil ters DNS ya da yayımlanan IP aralıklarına göre yapmak gerekir; user-agent kolayca taklit edilir.

429 ile 503 arasındaki fark da önemlidir: 429 belirli bir istemcinin sınırı aştığını, 503 ise hizmetin herkes için geçici olarak kullanılamadığını söyler. Planlı bakım için 429 değil 503 kullanılır.

İlgili terimler

← Sözlüğe dön