DynamoDB ThrottlingException
TL;DR — İstek hızınız bir sınırı aştı. Yeniden denenebilirdir — geri çekilin ve yeniden deneyin (SDK bunu varsayılan olarak yapar). Sürerse, bir kontrol düzlemi API'sini (CreateTable, UpdateTable, DescribeTable) çok sık çağırıyorsunuzdur ya da bir hesap düzeyi sınıra çarpıyorsunuzdur.
Ne anlama gelir
ThrottlingException: Rate of requests exceeds the allowed throughput.ThrottlingException (ve ilgili RequestLimitExceeded), sağlanan bir tablonun kendi RCU/WCU ayarı olmayan bir hız sınırını işaret eder. HTTP 400 olarak geri gelir ve yeniden denenebilirdir. En sık, çok hızlı yapılan kontrol düzlemi işlemlerinde olur ve — talep üzerine tablolar için — istek hızı çok yüksek olduğunda herhangi bir veri düzlemi işlemi için döndürülebilir (yapılandırılmış bir maksimum talep üzerine verimi aştığınızda dahil). Hata, kısıtlanan kaynağı ve çarpılan sınırı adlandıran ThrottlingReason alanları taşır.
Neden olur
- Kontrol düzlemi API'lerini yoklamak —
DescribeTable,ListTables,UpdateTable'ı sıkı bir döngüde çağırmak (örneğin bir tablonunACTIVEolmasını beklemek). - Birçok tabloyu hızlıca oluşturmak/silmek — eşzamanlı kontrol düzlemi işlemleri sınırlıdır (aynı anda
CREATING/UPDATING/DELETINGdurumunda 500'den fazla tablo/indeks olmaz). - Yapılandırılmış bir talep üzerine maksimum verim — bir talep üzerine tabloda ya da GSI'de
MaxReadRequestUnits/MaxWriteRequestUnits'i aşmakThrottlingExceptiondöndürür. - Bir talep üzerine tabloda ani bir patlama — yeni tablolar saniyede 4.000 yazma ve 12.000 okumada başlar ve önceki zirvenizin iki katını 30 dakika içinde aşmak, DynamoDB ölçeklenene kadar kısıtlayabilir.
Nasıl düzeltilir
- Üstel geri çekilme + titreşimle yeniden deneyin — AWS SDK'ları bunu otomatik yapar; yeniden denemeleri açık tutun ve uyarlanabilir yeniden deneme modunu değerlendirin.
- Kontrol düzlemi API'lerini sıkı-yoklamayı bırakın. Sıcak bir döngü yerine makul bir zamanlamada yoklayan bekleyicileri (
waitUntilTableExists) kullanın. - Veri düzlemi yazmalarını toplu işleyin ve temposunda tutun. Toplu yüklemeleri kademeli olarak artırın, böylece talep üzerine kapasite sizinle ölçeklenebilsin.
- Bir düzine tabloyu bir seferde oluşturmak yerine tablo işlemlerini zamana yayın.
Örnek
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
import {waitUntilTableExists} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({});
// a waiter polls on a backoff schedule — not a tight DescribeTable loop
await waitUntilTableExists({client, maxWaitTime: 120}, {TableName: 'Orders'});SSS
ThrottlingException, ProvisionedThroughputExceededException ile aynı mıdır?
Hayır. ProvisionedThroughputExceededException, bir tablonun sağlanan kapasitesini aşmanın veri düzlemi hatasıdır. ThrottlingException, düşük hesap geneli sınırları olan kontrol düzlemi işlemlerinde (CreateTable, UpdateTable, DescribeTable) ve çok yüksek hacimli patlamalarda en yaygındır.
Bir DynamoDB ThrottlingException'ı nasıl düzeltirim?
Üstel geri çekilme ve titreşimle yeniden deneyin — AWS SDK'ları bunu otomatik yapar. Kontrol düzlemi API'lerini sıkı-yoklamayı bırakın (waitUntilTableExists gibi bekleyicileri kullanın), toplu yüklemeleri kademeli olarak artırın, böylece talep üzerine kapasite sizinle ölçeklenebilsin ve tablo işlemlerini zamana yayın.
DynoTable'da boyutu kontrol edin
Kontrol düzlemi kısıtlaması tablo kurulumunu engellediğinde, döngüde DescribeTable yoklamak yerine mevcut tablolara göz atmak için DynoTable tuşunu kullanın; tabloları tek bir yenilemeden sonra ⌘K ile açın. İsteğe bağlı kısıtlamayı tetikleyen toplu yükler için, rampa yapmadan önce trafiği pricing calculator ile boyutlandırın.
Profilleri ⌘P ile değiştirin; Ayarlar → Profiller'deki Bağlantıyı Test Et seçeneği hesabı onaylar. Bkz. Connect to AWS ve Install.
Kaynaklar
- Error handling with DynamoDB — ThrottlingException (2026-07-13 tarihinde doğrulandı)
- Troubleshooting throttling in Amazon DynamoDB (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- ProvisionedThroughputExceededException — tablo başına kapasite kısıtlaması.
- RequestLimitExceeded — hesap istek hızı kotası.
- On-demand throughput exceeded — talep üzerine tablolar yine de kısıtlayabilir.
- ResourceInUseException — tablo meşgul / zaten var.
- Öğrenin: On-demand vs provisioned
Kaynaklar
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
- DynamoDB maximum throughput for on-demand tables — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.