Memecahkan masalah pembatasan untuk mode yang disediakan - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah pembatasan untuk mode yang disediakan

Jika aplikasi Anda melebihi kapasitas throughput yang disediakan pada tabel atau indeks, aplikasi tersebut akan dikenakan throttling permintaan. Pembatasan mencegah aplikasi Anda menggunakan terlalu banyak unit kapasitas. Ketika DynamoDB membatasi operasi baca atau tulis, ia mengembalikan a ke pemanggil. ProvisionedThroughputExceededException Aplikasi kemudian dapat mengambil tindakan yang sesuai, seperti menunggu beberapa saat sebelum mencoba kembali permintaan tersebut.

Untuk mengatasi masalah yang tampaknya terkait dengan pelambatan, langkah pertama yang penting adalah mengonfirmasi apakah pelambatan berasal dari DynamoDB atau dari aplikasi.

Topik ini membahas cara memecahkan masalah pelambatan umum untuk mode kapasitas yang disediakan. Berikut ini adalah beberapa skenario umum, dan langkah-langkah yang mungkin untuk membantu menyelesaikannya.

Tabel DynamoDB tampaknya memiliki kapasitas yang disediakan yang cukup, tetapi permintaan sedang dibatasi

Ini dapat terjadi ketika throughput di bawah rata-rata per menit, tetapi melebihi jumlah yang tersedia per detik. DynamoDB hanya melaporkan metrik tingkat menit CloudWatch ke, yang dihitung sebagai jumlah selama satu menit dan rata-rata. Namun DynamoDB sendiri menerapkan batasan kecepatan per detik. Jadi, jika terlalu banyak throughput yang terjadi dalam sebagian kecil menit tersebut, misalnya beberapa detik atau kurang, maka permintaan untuk sisa menit tersebut dapat dibatasi.

Misalnya, jika kita telah menyediakan 60 WCU di atas meja, maka dapat melakukan 3600 operasi tulis dalam satu menit. Namun jika seluruh 3600 permintaan WCU tercapai dalam detik yang sama, maka sisa menit tersebut akan di-throttle.

Salah satu cara untuk mengatasi skenario ini adalah dengan menambahkan beberapa kegugupan dan kemunduran eksponensial ke panggilan API. Untuk informasi lebih lanjut lihat posting ini tentang backoff dan jitter.

Penskalaan otomatis diaktifkan, tetapi tabel masih dibatasi

Hal ini dapat terjadi ketika terjadi lonjakan lalu lintas secara tiba-tiba. Penskalaan otomatis dapat dipicu ketika 2 titik data melanggar nilai pemanfaatan target yang dikonfigurasi dalam rentang satu menit. Oleh karena itu, penskalaan otomatis dapat terjadi karena kapasitas yang dikonsumsi berada di atas target pemanfaatan selama dua menit yang konsisten. Tetapi jika paku terpisah lebih dari satu menit, penskalaan otomatis mungkin tidak dipicu.

Demikian pula, peristiwa penurunan skala dapat dipicu ketika 15 titik data berturut-turut lebih rendah dari pemanfaatan target. Dalam kedua kasus tersebut, setelah penskalaan otomatis dipicu, operasi UpdateTable API dipanggil. Kemudian dapat memakan waktu beberapa menit untuk memperbarui kapasitas yang disediakan untuk tabel atau indeks. Selama periode ini, setiap permintaan yang melebihi kapasitas tabel yang disediakan sebelumnya akan dibatasi.

Singkatnya, penskalaan otomatis memerlukan titik data berturut-turut di mana nilai pemanfaatan target dilanggar untuk meningkatkan tabel DynamoDB. Untuk alasan ini, penskalaan otomatis tidak disarankan sebagai solusi untuk menangani beban kerja spikey. Silakan lihat dokumentasi pengoptimalan biaya penskalaan otomatis untuk informasi lebih lanjut.

Kunci pintas mungkin menyebabkan masalah pelambatan

Di DynamoDB, kunci partisi yang tidak memiliki kardinalitas tinggi dapat mengakibatkan banyak permintaan yang menargetkan beberapa partisi saja. Jika partisi panas yang dihasilkan melewati batas partisi 3000 RCU atau 1000 WCU per detik, ini dapat mengakibatkan pelambatan. Alat diagnostik CloudWatch Contributor Insights (CCI) dapat membantu men-debug ini dengan menyediakan grafik CCI untuk setiap pola akses item tabel. Anda dapat terus memantau kunci tabel DynamoDB yang paling sering diakses dan tren lalu lintas lainnya. Untuk informasi selengkapnya tentang CloudWatch Contributor Insights lihat Contributor Insights for CloudWatch DynamoDB. Untuk informasi selengkapnya, lihat Merancang kunci partisi untuk mendistribusikan beban kerja Anda dan Memilih Kunci Partisi DynamoDB yang Tepat.

Lalu lintas Anda ke tabel melebihi kuota throughput tingkat tabel.

Kuota throughput baca tingkat tabel dan throughput tulis tingkat tabel berlaku di tingkat akun di Wilayah mana pun. Kuota ini berlaku untuk tabel dengan mode kapasitas yang disediakan dan mode kapasitas sesuai permintaan. Secara default, kuota throughput yang ditempatkan pada tabel Anda adalah 40.000 unit permintaan baca dan 40.000 unit permintaan tulis. Jika lalu lintas ke tabel Anda melebihi kuota ini, tabel tersebut mungkin dibatasi. Untuk informasi lebih lanjut tentang cara mencegah hal ini terjadi, lihat Memantau DynamoDB untuk kesadaran operasional.

Untuk mengatasi masalah ini, gunakan konsol Kuota Layanan untuk meningkatkan kuota throughput baca atau tulis tingkat tabel untuk akun Anda.