AWS Rekognition'da TPS Limiti Aşması ve Çözümü
AWS Rekognition'ın IndexFaces, SearchFacesByImage ve SearchFaces işlemleri için varsayılan limit çoğu bölgede saniye başına 5 istek (TPS). us-east-1, us-west-2 ve eu-west-1'de 50'ye çıkıyor ama yine de yetersiz kalabiliyor.
Geliştirme ortamında yüz arama özelliği mükemmel çalışıyor, sonra 200 bin fotoğrafı işlemek için 32 thread'li bir havuz açıyorsun. Bir saniyeden az sürede ProvisionedThroughputExceededException ya da ThrottlingException hatası geliyor. Sorunu anlaman gerek: sadece retry'lar çözmüyor.
İlk adım istemci tarafında rate limiting koymak. Limitin biraz altında (mesela 4.5 TPS) bir hız sınırlandırıcı ekle. Önemli kısım: hesap ve bölge başına tek bir limiter paylaş. Eğer farklı worker'lar kendi limitlerini tutuyor olursa, toplam yine limitin üstüne çıkıyor.
SDK'nın adaptive retry modunu aç. Bunu yapılandırırken exponential backoff'u etkinleştir; böylece hata aldığında sistem otomatik olarak bekleme süresini artırıyor. Ama bu da yeterli değil.
Büyük bir işe başlamadan önce AWS konsolundan quota artışı iste. İşin ortasında istemek, gecikmelere ve timeout'lara neden oluyor. Artış onaylanması birkaç saat alabilir, planlama yap.
Ashish'in yazısında bu sorunun detaylı analizi ve çözüm adımları var. Özet: rate limiting + paylaşılan limiter + adaptive retry + önceden quota artışı iste. Aksi halde backfill işleri saatlerce takılı kalır.
0 yorum