DynamoDB LimitExceededException
TL;DR — Aynı anda çok fazla kontrol düzlemi işlemi gönderdiniz (ya da bir tablo/hesap sınırına çarptınız). Hesabınız genelinde bir seferde en fazla 500 tablo ve indeks CREATING/UPDATING/DELETING durumunda olabilir. Tablo işlemlerinizi sıralı yürütün, ACTIVE için bekleyin ve geri çekilmeyle yeniden deneyin.
Ne anlama gelir
LimitExceededException: Too many operations for a given subscriber.Bu bir kontrol düzlemi hatasıdır — GetItem/PutItem/Query'den değil, CreateTable, UpdateTable, DeleteTable, indeks oluşturma, geri yüklemeler ve benzeri çağrılardan gelir. DynamoDB sana bir eşzamanlılık ya da hesap sınırını aştığınızı söylüyor. Bu bir HTTP 400'dür ve AWS onu yeniden denenebilir olarak listeler — süren işlemler bittikçe koşul temizlenir.
Neden olur
- Çok fazla eşzamanlı tablo/indeks işlemi —
CREATING,DELETINGveyaUPDATINGdurumundaki tabloların ve indekslerin kümülatif sayısı hesap/Bölge başına 500'ü aşamaz. (Hesap başına en fazla 500 eşzamanlı tablo işlemine izin verilir —CreateTable,UpdateTable,DeleteTable,UpdateTimeToLive,RestoreTableFromBackup,RestoreTableToPointInTime— ve ikincil indeksli tablolar oluştururken yalnızca 250'ye kadar eşzamanlı istek.) - Toplu yığın dağıtımları — birçok tabloyu (ya da birçok GSI'yi) aynı anda oluşturan ya da yıkan CloudFormation/CDK/Terraform, eşzamanlılık bütçesini aşar.
- Hesap kaynak kotaları — hesap/Bölge başına 2.500 tabloluk yumuşak kotaya ya da 50 eşzamanlı içe aktarma işi sınırına çarpmak.
- DynamoDB Streams yanlış kullanımı —
GetRecords'u 1000'den büyük birLimitile çağırmak ya da aynı streams parçasından aynı anda 2'den fazla sürecin okuması. - Not: aynı tablo hâlâ
UPDATINGiken gönderilen ikinci birUpdateTable, bu hata olarak değil, ResourceInUseException olarak belirir — ama her ikisi de "önceACTIVEiçin bekle" anlamına gelir.
Nasıl düzeltilir
- Kontrol düzlemi işlemlerini sıralı yürütün — ona bir sonraki değişikliği göndermeden önce bir tablonun (ve her GSI'nin)
ACTIVEolmasını bekleyin.DescribeTable'ı yoklayın veTableStatus === 'ACTIVE'üzerinde koşullandırın. - Üstel geri çekilmeyle yeniden deneyin — sınır geçicidir; süren işlemler boşaldığında geri çekilmiş bir yeniden deneme genellikle başarılı olur.
- Toplu dağıtımları kısıtlayın — büyük bir yığını bölün, böylece yüzlerce tabloyu/GSI'yi aynı anda oluşturmayın ya da hepsi birlikte tetiklenmesin diye açık
DependsOnsıralaması ekleyin. - Hizmet kotalarınızı kontrol edin — hesap başına tablo sınırına yakınsanız, sonsuza kadar yeniden denemek yerine Service Quotas'ta bir kota artışı isteyin.
- GSI'leri birer birer ekleyin —
UpdateTableişlemi başına yalnızca bir global ikincil indeks oluşturabilir veya silebilirsiniz, bu yüzden indeks değişikliklerini sıralı yürütün ve her geri doldurmayı bekleyin.
SSS
DynamoDB'de LimitExceededException'ı nasıl düzeltirim? Kontrol düzlemi işlemlerini (CreateTable/UpdateTable/DeleteTable/indeks değişiklikleri) paralel göndermeyi bırakın. Bir sonraki değişiklikten önce her tablo ve indeksin ACTIVE'e ulaşmasını bekleyin, CREATING/UPDATING/DELETING durumundaki tabloların sayısını hesap sınırının altında tutun ve üstel geri çekilmeyle yeniden deneyin.
LimitExceededException bir kısıtlama hatası mı? Bu, veri düzlemi kısıtlaması değil, bir kontrol düzlemi eşzamanlılık/sınır hatasıdır. Veri düzlemi kısıtlaması bunun yerine ProvisionedThroughputExceededException, ThrottlingException veya RequestLimitExceeded olarak belirir.
DynoTable’ı Local’e yönelt
DynoTable bir veri düzlemi istemcisidir — GetItem, Query ve Scan veri tüketmez
kontrol düzlemi eşzamanlılık bütçesi bu hatayı korur. Bir dağıtım komut dosyası isabet ederse
LimitExceededException tabloları oluştururken tablolara göz atmak için DynoTable tuşunu kullanın
zaten ACTIVE'e ulaştı ve şemayı Tablo ayarları'ndan doğrulayın.
IaC'niz yeniden dener. Yerel yığınlar için DynamoDB Local'i -sharedDb ile çalıştırın ve
Yerel profil (Running DynamoDB Local) aracılığıyla bağlanın, böylece
kısmi dağıtımları her GSI'nin AWS'te bitmesini beklemeden inceleyebilirsiniz.
single-table design planner, meşgul bir hesapta
bir CreateTable daha tetiklemeden önce tablo şekillerini çizmeye yardımcı olur.
İlgili hatalar
- ResourceInUseException — zaten değiştirilmekte olan ya da zaten var olan bir tabloda bir işlem.
- ThrottlingException — veri/kontrol düzlemi hız sınırlaması.
- RequestLimitExceeded — hesap istek hızı sınırı.
- Öğrenin: DynamoDB migrations
Kaynaklar
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- UpdateTable — Amazon DynamoDB API Reference
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.