Provisioned throughput decreases are limited within a given day
TL;DR — DynamoDB membatasi seberapa sering Anda dapat menurunkan provisioned read/write capacity tabel (atau GSI) dalam satu hari UTC. Anda telah menggunakan jatah, jadi UpdateTable ditolak. Tunggu pengisian ulang per jam, gabungkan penurunan menjadi lebih sedikit langkah yang lebih besar, atau alihkan tabel ke on-demand dan berhenti mengelola penurunan sepenuhnya.
Apa artinya
LimitExceededException: Subscriber limit exceeded: Provisioned throughput
decreases are limited within a given UTC daySetiap tabel memulai hari UTC dengan anggaran kecil penurunan kapasitas (peningkatan dapat dilakukan sesering diperlukan, tergantung kuota akun dan DynamoDB tidak membiarkan Anda naik terlalu cepat). Anda memulai hari dengan 4 penurunan tersedia, dan memperoleh 1 lagi setiap jam hingga maksimum 4 tersedia pada satu waktu — cukup untuk hingga 27 penurunan sepanjang hari 24-jam penuh. Habiskan dan panggilan penurunan UpdateTable lebih lanjut gagal dengan LimitExceededException (HTTP 400; pesan generik panduan pengembang untuk exception ini adalah "Too many operations for a given subscriber.") sampai anggaran terisi ulang. Ini kuota, jadi mencoba ulang secara membabi buta tidak akan membantu dalam jendela yang sama.
Mengapa itu terjadi
- Auto-scaling berkedip — workload yang meledak membuat auto-scaling DynamoDB menurunkan kapasitas berulang kali, membakar anggaran penurunan.
- Skrip yang menurunkan kapasitas terlalu sering — banyak penurunan kecil alih-alih satu yang lebih besar.
- Penyetelan manual selama load test — berulang kali menurunkan kapasitas saat trafik surut.
- Anggaran per-index — batas penurunan tabel dan GSI terpisah, jadi setiap GSI punya jatahnya sendiri; tabel dengan beberapa index dapat mencapainya di salah satunya. Satu permintaan
UpdateTableyang menurunkan tabel dan GSI ditolak seluruhnya jika salah satunya melebihi batas saat ini.
Bagaimana cara memperbaikinya
- Tunggu pengisian ulang. Satu penurunan menjadi tersedia setiap jam (hingga 4 tersedia pada satu waktu); anggaran 4-penurunan baru dimulai setiap hari UTC.
- Lakukan lebih sedikit penurunan yang lebih besar. Turun dari 1000 → 200 dalam satu langkah alih-alih lima langkah 160-unit.
- Setel auto-scaling — naikkan target utilisasi dan tambahkan cooldown scale-in agar berhenti menurunkan terlalu agresif.
- Alihkan ke on-demand jika workload meledak atau tidak dapat diprediksi:On-demand menghapus manajemen kapasitas manual (dan kuota penurunannya) sepenuhnya.
aws dynamodb update-table --table-name <Table> \ --billing-mode PAY_PER_REQUEST
Kesalahan terkait
- ProvisionedThroughputExceededException — throttle runtime ketika baca/tulis melebihi provisioned capacity.
- LimitExceededException — keluarga kuota control-plane akun/tabel yang lebih luas.
- Pelajari: On-demand vs provisioned
Referensi
- 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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.