DynamoDB RequestLimitExceeded
TL;DR — Anda melebihi kuota laju-permintaan tingkat-akun/tabel, bukan provisioned capacity milik tabel. Tabel on-demand default ke 40.000 read request unit dan 40.000 write request unit per detik. Pertahankan retry backoff SDK, naikkan kuota di Service Quotas jika trafik nyata, dan sebarkan beban agar satu tabel/partisi bukan bottleneck.
Apa artinya
RequestLimitExceeded: Throughput exceeds the current throughput limit for your
account. To request a limit increase, contact AWS Support.RequestLimitExceeded adalah salah satu dari tiga exception throttling yang dikembalikan DynamoDB pada data plane (bersama ProvisionedThroughputExceededException dan ThrottlingException). Ia menandakan Anda telah mencapai service quota tingkat-akun — seperti kuota throughput per-tabel untuk tabel on-demand — alih-alih batas provisioned RCU/WCU per-tabel. Ia mengembalikan HTTP 400 dan dapat dicoba ulang — SDK backoff dan mencoba ulang secara otomatis. Kesalahan membawa field ThrottlingReason (mis. TableWriteAccountLimitExceeded atau IndexReadAccountLimitExceeded) ditambah ARN resource yang terkena.
Mengapa itu terjadi
- Batas default tabel on-demand — setiap tabel on-demand (dan setiap GSI-nya) punya kuota default yang dapat disesuaikan sebesar 40.000 read request unit dan 40.000 write request unit per detik. Konsumsi berkelanjutan melampauinya throttle dengan
ThrottlingReasontingkat-akun sampai kuota dinaikkan. - Tabel tidak dapat menskala lebih jauh di bawah kuota akun — sesuai dokumen AWS, laju permintaan on-demand melebihi throughput akun yang diizinkan "and the table cannot be scaled further". Kuota ini adalah pengaman cadangan, dan dapat ditingkatkan.
- Tabel yang baru on-demand memanas — tabel on-demand baru (atau yang baru dialihkan ke on-demand) langsung melayani hingga dua kali lipat puncak sebelumnya; lonjakan yang jauh lebih besar dari itu dapat throttle sebelum menskala.
- Satu tabel panas menyerap lonjakan trafik jauh di atas puncak terkininya.
Bagaimana cara memperbaikinya
- Pertahankan retry exponential-backoff aktif — default SDK menangani lonjakan transien. Gunakan mode retry adaptif untuk workload yang meledak. Jangan nonaktifkan retry.
- Naikkan kuota — minta peningkatan ke throughput on-demand per-tabel (atau kuota jumlah-tabel/throughput akun) di Service Quotas jika trafik sah dan berkelanjutan.
- Pre-warm sebelum lonjakan yang diketahui — ramp trafik naik alih-alih langsung melompat ke puncak, agar penskalaan on-demand tetap di depan permintaan.
- Sebarkan beban — shard kunci panas dan distribusikan tulisan agar satu tabel/partisi tidak membawa seluruh lonjakan (pola hot-partition).
- Cache baca panas (DAX atau cache aplikasi) untuk membuang tekanan baca di bawah batas.
FAQ
Bagaimana RequestLimitExceeded berbeda dari ProvisionedThroughputExceededException? ProvisionedThroughputExceededException berarti tabel provisioned-capacity melebihi RCU/WCU yang dikonfigurasinya sendiri. RequestLimitExceeded berarti Anda mencapai kuota laju-permintaan tingkat-akun atau tabel — paling sering default on-demand 40.000 read dan 40.000 write request unit per detik — terlepas dari pengaturan per-tabel satu tabel.
Apakah RequestLimitExceeded dapat dicoba ulang? Ya. Ini kesalahan throttling dan AWS SDK mencoba ulang secara otomatis dengan exponential backoff. Kejadian yang bertahan berarti Anda butuh peningkatan kuota atau menyebarkan beban, bukan lebih banyak retry.
Kesalahan terkait
- ProvisionedThroughputExceededException — provisioned capacity per-tabel terlampaui.
- ThrottlingException — pembatasan laju control-plane / umum.
- Pelajari: On-demand vs provisioned · Hot partitions
Referensi
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.