Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hız sınırları

Bu sayfa, Open Play’in bugün uyguladığı hız sınırlarını (rate limit) ve 429 aldığınızda ne yapacağınızı anlatır. Önemli bir dürüstlük notu: API anahtarı başına genel bir hız sınırı yoktur. Sınırlar belirli işlemlere (giriş, kayıt, sohbet, eklenti komutu, soket bağlantısı) konmuştur; geri kalan uçlar sınırsızdır ve yükü sizin yönetmeniz gerekir.

Bilinmesi gerekenler

  • Genel bir “dakikada N istek” kotası yok. Sunucu anahtarıyla yapılan çağrılar için anahtar ya da ortam başına genel sınır bulunmaz.
  • Sayaçlar Redis’te tutulur ve Redis’e ulaşılamazsa sınır uygulanmaz (fail-open); tek istisna, aşağıda belirtilen denetim satırı tavanıdır. Sınırı tek başına güvenlik kontrolü olarak kullanmayın.
  • Retry-After başlığı yalnız eklenti 429’unda (60 sn) ve 503 yanıtlarında (30 sn) vardır. Çekirdek ve kimlik uçlarının 429’u Retry-After taşımaz; kendi geri çekilmenizi uygulayın.
  • İstemci IP’si, kimlik uçlarındaki sınırların anahtarıdır. Ters vekil istemci IP’sini iletmiyorsa tüm oyuncular aynı kovayı paylaşır (üretim kontrol listesi).

Kimlik uçları (oyuncu giriş hattı)

Bu sınırlar servis katmanında uygulanır; REST’in kendisinde de aynıdır. Pencere sabittir (ilk istekle başlar ve süre dolunca sayaç sıfırlanır; kayan pencere değildir); aşım 429 ve düz metin rate limited döner (Retry-After yok).

KovaLimitPencereAnahtarHangi uçlar
Misafir açma3060 snİstemci IP’siPOST /v1/auth/sign-in/guest (yeniden giriş de sayılır)
E-posta girişi560 snİstemci IP’siPOST /v1/auth/sign-in/email (her deneme)
Başarısız giriş kilidi10900 snAdres + IPYanlış parola denemeleri; başarılı girişte hak iade edilir; parola değiştirmede yanlış mevcut parola da sayılır
Kayıt (IP)1060 snİstemci IP’siPOST /v1/auth/sign-up/email, misafir terfisi
Kayıt (oturum)3060 snOturum sahibiPOST /v1/auth/guest/upgrade/email
Kayıt (adres)5900 snE-posta adresiKayıt ve terfi
Parola değiştirme (IP)1060 snİstemci IP’siPOST /v1/auth/change-password
Parola değiştirme (hesap)660 snOyuncuPOST /v1/auth/change-password
Kurtarma (IP)560 snİstemci IP’siforgot-password, reset-password, sign-in/magic-link (üç uç tek kovayı paylaşır)
Kurtarma (adres)5900 snE-posta adresiforgot-password, sign-in/magic-link
OAuth başlangıcı3060 snİstemci IP’sisign-in/oauth/{provider}, link/{provider}
OAuth dönüşü6060 snİstemci IP’sicallback/{provider}

Ek olarak:

SınırLimitAnahtarNot
Görünen ad değiştirme10 / 3600 snOyuncuPOST /v1/auth/session/display-name; aşım 429
Hesap silme denemesi5 / 3600 snOyuncuPOST /v1/auth/account/delete; aşım 429
Başarısız giriş denetim satırı20 / 3600 snHesapGirişi reddetmez; yalnız arka plan denetim kaydını kısar. Redis kesintisinde kayıt atlanır (fail-closed)

Not

Misafir açma kovası IP başınadır. Ters vekil istemci IP’sini iletmiyorsa ya da bir NAT/yurt ağı arkasından çok oyuncu bağlanıyorsa 30 misafir/dakika sınırı hızla dolar. Bir lansman ya da yük testi planlıyorsanız IP iletimini doğrulayın.

Sohbet ve bildirim

SınırLimitPencereAnahtarAşılınca
Sohbet mesajı gönderme2010 snOrtam + oyuncuREST’te 429; sohbet soketinde message_rejected
Bildirim teslimi6060 snOrtam + oyuncuTeslim ertelenir (sağlayıcıya inilmez), oyuncuya hata dönmez

Eklenti komutları

Eklenti komut ve sorguları oyuncu başına, kova başına dakikalık bütçelere tabi olabilir. Bütçeyi eklenti tanımlar; sunucu bunu REST, realtime komutu ve gRPC yolunda aynı kararla uygular. Aşım eklenti zarfıyla gelir: 429, code: "rate_limited", retryable: true, Retry-After: 60.

Bugün bütçe tanımlayan eklenti package-ride’dır: 60 sn’lik pencerede kova başına 6 ile 60 komut (ör. teslimat kabul/başlatma/tamamlama 12, giriş bonusu 10, görev ödülü ve garaj 30, çarpışma/yarış bahsi 60). Kova değerleri eklentiye özgüdür ve değişebilir; kesin sayılar için eklentinin belgesine bakın. Operatör bazı kovaları “gözlem” kipine alabilir; bu kipte aşım yalnız sayılır, komut reddedilmez.

Unity SDK’sında PluginClient.RetryAfter(hata) eklenti 429’u için 60 saniye döndürür.

Realtime soket

SınırDeğerAşılınca
Adres başına yeni bağlantı30 / dakikaYükseltme reddedilir
Adres başına açık soket8CapacityExceeded, soket kapanır
Oyuncu başına açık soket4CapacityExceeded, soket kapanır
Bağlantı başına çerçeve hızı40/sn (160 çerçevelik patlama payı)CapacityExceeded (retryable: true), soket kapanır

Ayrıntı: yeniden bağlanma ve limitler.

429 aldığınızda

HTTP/1.1 429 Too Many Requests
Content-Type: text/plain; charset=utf-8

rate limited

Eklenti ucunda:

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60
x-request-id: 0192a3b4-0000-7000-8000-0000000000d1

{"code":"rate_limited","message":"rate limited","retryable":true,"requestId":"0192a3b4-0000-7000-8000-0000000000d1"}
  1. Retry-After varsa o kadar bekleyin; yoksa üstel geri çekilme kullanın (ör. 1, 2, 4, 8 sn; üst sınır 30 sn) ve rastgele bir sapma (jitter) ekleyin.
  2. İstek değiştiriciyse aynı Idempotency-Key ile tekrar edin (idempotency ve eşzamanlılık).
  3. Kullanıcı eylemiyle tetiklenen sınırlarda (giriş, kayıt) otomatik tekrar yerine kullanıcıya bekleme süresini gösterin; parola ve kayıt uçlarında otomatik tekrar kilit süresini uzatır.
  4. CrxClient (sunucu anahtarı) 429’u, GET ve anahtarlı isteklerde, Retry-After’a saygı göstererek kendisi yeniden dener (varsayılan 2 deneme).

Uyarı

Kural bütçesi aşımı da (rule budget exceeded: <kural>) 429 döner; bu bir hız sınırı değil, kural motoru bütçesidir (komut başına 50 kural, 200 eylem, 500 değerlendirme düğümü ve zincir derinliği 5). Yeniden deneme sonuç değiştirmez; kuralı sadeleştirin (oyun kuralları).

Kendi tarafınızda yapmanız gerekenler

Genel bir sunucu sınırı olmadığı için büyük yükte sizin koruma eklemeniz gerekir:

  • Sunucudan sunucuya toplu işlerde eşzamanlılığı sınırlayın (ör. aynı anda 5 ile 10 istek) ve hataları geri çekilmeyle yönetin.
  • Anahtar bazında istek hızını kendi tarafınızda ölçün; tek bir sızmış anahtar sınırsız çağrı yapabilir (güvenlik).
  • Lansman öncesi GET /v1/… okumalarını önbelleğe alın (katalog uçları ETag ve If-None-Match ile koşullu okumayı destekler; oyuncu başına yoklamayı 15 sn’den sık yapmayın).