Pengecualian Pembatasan DynamoDB
TL;DR — Tingkat permintaan Anda melebihi batas. Ini dapat dicoba lagi — mundur dan coba lagi (SDK melakukan ini secara default). Jika masalah ini terus berlanjut, Anda terlalu sering memanggil bidang kontrol API (CreateTable, UpdateTable, DescriptionTable), atau mencapai batas tingkat akun.
Apa artinya
ThrottlingException: Rate of requests exceeds the allowed throughput.ThrottlingException (dan RequestLimitExceeded terkait) menandakan batas laju yang bukan merupakan setelan RCU/WCU tabel yang disediakan. Itu muncul kembali sebagai HTTP 400 dan dapat dicoba lagi. Hal ini paling umum terjadi pada operasi bidang kontrol yang dilakukan terlalu cepat, dan — untuk tabel sesuai permintaan — dapat dikembalikan untuk operasi bidang data apa pun ketika tingkat permintaan terlalu tinggi (termasuk saat Anda melebihi throughput maksimum sesuai permintaan yang dikonfigurasi). Kesalahan ini membawa bidang ThrottlingReason yang menyebutkan sumber daya yang dibatasi dan batas yang dicapai.
Mengapa itu terjadi
- Polling control-plane APIs — memanggil
DescribeTable,ListTables,UpdateTabledalam loop yang ketat (misalnya menunggu tabel menjadiACTIVE). - Membuat banyak tabel/deleting dengan cepat — operasi bidang kontrol serentak dibatasi (tidak lebih dari 500 tabel/indexes di
CREATING/UPDATING/DELETINGsekaligus). - Throughput maksimum sesuai permintaan yang dikonfigurasi — melebihi
MaxReadRequestUnits/MaxWriteRequestUnitspada tabel sesuai permintaan atau GSI mengembalikanThrottlingException. - Ledakan tiba-tiba pada tabel sesuai permintaan — tabel baru dimulai pada 4.000 pembacaan/s dan 12.000 pembacaan/s, dan melebihi dua kali lipat puncak sebelumnya dalam waktu 30 menit dapat melambat hingga skala DynamoDB.
Bagaimana cara memperbaikinya
- Coba lagi dengan backoff eksponensial + jitter — SDK AWS melakukan ini secara otomatis; tetap aktifkan percobaan ulang dan pertimbangkan mode percobaan ulang adaptif.
- Hentikan polling ketat APIs. Gunakan pelayan (
waitUntilTableExists) yang melakukan polling pada jadwal yang masuk akal, bukan hot loop. - Penulisan data plane batch dan kecepatan. Tingkatkan pemuatan massal secara bertahap sehingga kapasitas sesuai permintaan dapat disesuaikan dengan kebutuhan Anda.
- Sebarkan operasi tabel dari waktu ke waktu daripada membuat lusinan sekaligus.
- Periksa
ThrottlingReasondi responsnya. Ini menyebutkan sumber daya dan batas yang dibatasi — pembatasan bidang kontrol vs bidang data sesuai permintaan memerlukan perbaikan yang berbeda.
Contoh
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'});FAQ
Apakah ThrottlingException sama dengan ProvisionedThroughputExceededException?
Tidak. ProvisionedThroughputExceededException adalah kesalahan bidang data karena melebihi kapasitas yang disediakan tabel. ThrottlingException paling umum terjadi pada operasi bidang kontrol (CreateTable, UpdateTable, DescribeTable), yang memiliki batas seluruh akun yang rendah, dan pada semburan volume yang sangat tinggi.
Bagaimana cara memperbaiki ThrottlingException DynamoDB?
Coba lagi dengan backoff dan jitter eksponensial — SDK AWS melakukan ini secara otomatis. Hentikan API bidang kontrol pemungutan suara yang ketat (gunakan pelayan seperti waitUntilTableExists), tingkatkan muatan massal secara bertahap sehingga kapasitas sesuai permintaan dapat disesuaikan dengan Anda, dan sebarkan pengoperasian tabel seiring waktu.
Cek ukuran di DynoTable
Saat pengaturan tabel blok pembatasan bidang kontrol, gunakan DynoTable untuk menelusuri tabel yang ada alih-alih melakukan polling DescribeTable dalam satu lingkaran — buka tabel dengan ⌘K setelah satu penyegaran. Untuk muatan massal yang memicu pembatasan sesuai permintaan, ukur lalu lintas dengan kalkulator harga sebelum Anda melakukan peningkatan.
Ganti profil dengan ⌘P; Uji Koneksi pada Pengaturan → Profil mengonfirmasi akun. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- Penanganan kesalahan dengan DynamoDB — ThrottlingException (diverifikasi 13-07-2026)
- Memecahkan masalah pembatasan di Amazon DynamoDB (diverifikasi 13-07-2026)
Kesalahan terkait
- ProvisionedThroughputExceededException — throttle kapasitas per tabel.
- RequestLimitExceeded — kuota tingkat permintaan akun.
- Throughput sesuai permintaan terlampaui — tabel sesuai permintaan masih dapat dibatasi.
- ResourceInUseException — tabel sibuk / sudah ada.
- Pelajari: Sesuai permintaan vs disediakan
Referensi
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
- Memecahkan masalah pembatasan di Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
- Mode kapasitas sesuai permintaan DynamoDB — Panduan Pengembang Amazon DynamoDB
- Throughput maksimum DynamoDB untuk tabel sesuai permintaan — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.