Provisioned throughput decreases are limited within a given day
TL;DR — DynamoDB, tek bir UTC günü içinde bir tablonun (ya da GSI'nin) sağlanan okuma/yazma kapasitesini ne sıklıkla düşürebileceğinizi sınırlar. Tahsisatı kullandınız, bu yüzden UpdateTable reddedildi. Saatlik yeniden dolumu bekleyin, düşürmenizi daha az sayıda daha büyük adıma toplayın ya da tabloyu talep üzerine moda geçirin ve düşürmeleri yönetmeyi tamamen bırakın.
Ne anlama gelir
LimitExceededException: Subscriber limit exceeded: Provisioned throughput
decreases are limited within a given UTC dayHer tablo bir UTC gününe küçük bir kapasite düşürme bütçesiyle başlar (artışlar, hesap kotalarına ve DynamoDB'nin çok hızlı yükseltmenize izin vermemesine tabi olarak gerektiği kadar sık yapılabilir). Güne 4 düşürme mevcut olarak başlarsınız ve her saat 1 tane daha kazanırsınız, herhangi bir anda en fazla 4 mevcut olacak şekilde — tam 24 saatlik bir gün boyunca 27 düşürmeye kadar yeterli. Onu tüketin ve bütçe yeniden dolana kadar sonraki UpdateTable düşürme çağrıları bir LimitExceededException ile başarısız olur (HTTP 400; geliştirici kılavuzunun bu istisna için genel mesajı "Too many operations for a given subscriber."). Bu bir kotadır, dolayısıyla aynı pencere içinde körü körüne yeniden denemek yardımcı olmaz.
Neden olur
- Otomatik ölçeklendirme çırpınması — ani bir iş yükü, DynamoDB otomatik ölçeklendirmesinin kapasiteyi tekrar tekrar aşağı adımlamasına neden olur ve düşürme bütçesini yakar.
- Kapasiteyi çok sık düşüren bir betik — bir büyüğü yerine birçok küçük düşürme.
- Yük testleri sırasında manuel ayar — trafik azaldıkça kapasiteyi tekrar tekrar düşürmek.
- İndeks başına bütçeler — tablo ve GSI düşürme sınırları ayrıştırılmıştır, dolayısıyla her GSI'nin kendi tahsisatı vardır; birkaç indeksli bir tablo onlardan birinde çarpabilir. Hem tabloyu hem de bir GSI'yi düşüren tek bir
UpdateTableisteği, herhangi biri mevcut sınırını aşarsa tamamen reddedilir.
Nasıl düzeltilir
- Yeniden dolumu bekleyin. Her saat bir düşürme mevcut olur (herhangi bir anda en fazla 4 mevcut); her UTC gününde yeni bir 4 düşürmelik bütçe başlar.
- Daha az, daha büyük düşürmeler yapın. Beş 160 birimlik adım yerine tek bir adımda 1000 → 200'e düşürün.
- Otomatik ölçeklendirmeyi ayarlayın — hedef kullanımı yükseltin ve bir ölçek-içeri bekleme süresi ekleyin, böylece bu kadar agresif düşürmeyi durdursun.
- İş yükü ani ya da öngörülemezse talep üzerine moda geçin:Talep üzerine mod, manuel kapasite yönetimini (ve düşürme kotasını) tamamen kaldırır.
aws dynamodb update-table --table-name <Table> \ --billing-mode PAY_PER_REQUEST
İlgili hatalar
- ProvisionedThroughputExceededException — okumalar/yazmalar sağlanan kapasiteyi aştığında çalışma zamanı kısıtlaması.
- LimitExceededException — daha geniş hesap/tablo kontrol düzlemi kota ailesi.
- Öğrenin: On-demand vs provisioned
Kaynaklar
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- UpdateTable — Amazon DynamoDB API Reference
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.