Mendiagnosis pelambatan - Amazon DynamoDB

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

Mendiagnosis pelambatan

Saat aplikasi Anda mengalami pembatasan, DynamoDB memberikan informasi pengecualian terperinci dan CloudWatch metrik yang ditargetkan untuk membantu Anda mendiagnosis peristiwa ini.

Bagian ini menyajikan pendekatan sistematis untuk memahami peristiwa pelambatan dalam aplikasi DynamoDB Anda. Ini menunjukkan cara menafsirkan pengecualian pelambatan, menghubungkannya dengan CloudWatch metrik untuk wawasan yang lebih dalam, dan memahami perubahan apa yang akan mengurangi pelambatan dalam aplikasi DynamoDB Anda.

Memahami pengecualian pelambatan

Ketika DynamoDB membatasi permintaan, ia mengembalikan pengecualian khusus dengan informasi diagnostik terperinci. Misalnya, di Jawa, ini termasukProvisionedThroughputExceededException,RequestLimitExceeded, atauThrottlingException.

Setiap pengecualian mencakupThrottlingReasons, kumpulan individu yang ThrottlingReason berisi dua bidang kunci untuk membantu Anda mengidentifikasi dan memahami pelambatan:

  • Alasan - Bidang gabungan mengikuti format <ResourceType><OperationType><LimitType>

  • ARN sumber daya - Nama Sumber Daya Amazon (ARN) dari tabel atau indeks yang terpengaruh

Bidang alasan mengikuti patern yang konsisten yang membantu Anda memahami dengan tepat apa yang terjadi:

  • ResourceType(Apa yang sedang dibatasi): atau Table Index

  • OperationType(Jenis operasi apa): Read atau Write

  • LimitType(Mengapa pelambatan terjadi):

    • KeyRangeThroughputExceeded: Ini terjadi ketika partisi tertentu yang mendukung tabel atau indeks Anda telah menghabiskan kapasitas baca atau tulis melebihi batas throughput per partisi internal.

    • ProvisionedThroughputExceeded: Ini terjadi pada tabel yang disediakan atau indeks sekunder global ketika tingkat konsumsi baca atau tulis telah melebihi jumlah yang disediakan.

    • AccountLimitExceeded: Ini terjadi pada tabel atau indeks sesuai permintaan ketika tingkat konsumsi baca atau tulis telah melebihi tingkat konsumsi maksimum untuk tabel dan indeksnya sebagaimana ditetapkan pada tingkat akun. Anda dapat meminta kenaikan dalam kuota ini.

    • MaxOnDemandThroughputExceeded: Ini terjadi pada tabel atau indeks sesuai permintaan ketika tingkat konsumsi baca atau tulis telah melebihi tingkat konsumsi maksimum yang disediakan pengguna yang dikonfigurasi untuk tabel atau indeks. Anda dapat meningkatkan nilai ini sendiri ke nilai apa pun hingga batas akun atau menyetel ke -1 untuk menunjukkan tidak ada batas yang diberikan pengguna.

Sumber daya ARN mengidentifikasi dengan tepat tabel atau indeks mana yang sedang dibatasi:

  • Untuk tabel: arn:aws:dynamodb:[region]:[account-id]:table/[table-name]

  • Untuk indeks: arn:aws:dynamodb:[region]:[account-id]:table/[table-name]/index/[index-name]

Contoh alasan pelambatan lengkap:

  • TableReadProvisionedThroughputExceeded

  • IndexWriteAccountLimitExceeded

Ini membantu mengidentifikasi dengan tepat sumber daya apa yang sedang dibatasi, jenis operasi apa yang menyebabkannya, dan mengapa pelambatan terjadi.

Contoh pengecualian

Contoh 1: Kapasitas yang disediakan terlampaui pada GSI

{ "ThrottlingReasons": [ { "reason": "IndexWriteProvisionedThroughputExceeded", "resource": "arn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrders/index/OrderDateIndex" } ], "awsErrorDetails": { "errorCode": "ProvisionedThroughputExceeded", "errorMessage": "The level of configured provisioned throughput for the index was exceeded", "serviceName": "DynamoDB", "sdkHttpResponse": { "statusText": "Bad Request", "statusCode": 400 } } }

Dalam contoh ini, aplikasi menerima ProvisionedThroughputExceededException dengan alasannyaIndexWriteProvisionedThroughputExceeded. Menulis ke OrderDateIndex sedang dibatasi karena konsumsi tulis telah melebihi kapasitas tulis yang disediakan GSI yang dikonfigurasi.

Contoh 2: Throughput maksimum sesuai permintaan terlampaui

{ "ThrottlingReasons": [ { "reason": "TableReadMaxOnDemandThroughputExceeded", "resource": "arn:aws:dynamodb:us-east-1:123456789012:table/UserSessions" } ], "awsErrorDetails": { "errorMessage": "Throughput exceeds the maximum OnDemandThroughput configured on table or index", "errorCode": "ThrottlingException", "serviceName": "DynamoDB", "sdkHttpResponse": { "statusText": "Bad Request", "statusCode": 400 } } }

Dalam contoh ini, pembacaan dari UserSessions tabel sedang dibatasi karena melebihi batas throughput maksimum sesuai permintaan yang dikonfigurasi pada tabel.

Kerangka diagnosis pelambatan DynamoDB

Saat aplikasi Anda mengalami pelambatan, ikuti langkah-langkah berikut untuk mendiagnosis dan menyelesaikan masalah.

Langkah 1 - Analisis ThrottlingReason detailnya

  1. Periksa bidang alasan untuk mengidentifikasi alasan spesifik untuk pelambatan. Alasannya merinci jenis sumber daya yang dibatasi (tabel atau indeks), jenis operasi yang menyebabkan peristiwa pelambatan (baca atau tulis), dan jenis batas yang terlampaui (partisi, throughput yang disediakan, batas akun).

  2. Periksa bidang ResourcEarn untuk mengidentifikasi sumber daya (tabel atau GSI) mana yang sedang dibatasi.

  3. Gunakan informasi gabungan ini untuk memahami konteks lengkap dari masalah pelambatan.

    Misalnya, pertimbangkan skenario ini di mana Anda menerima pengecualian berikut ProvisionedThroughputExceededException dengan alasan pelambatan. TableWriteKeyRangeThroughputExceeded ResourcEarn yang terkena dampak adalah. arn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrders

    Kombinasi ini memberi tahu Anda bahwa operasi penulisan ke CustomerOrders tabel Anda sedang dibatasi. Pelambatan terjadi pada tingkat partisi (bukan level tabel, yang akan ditampilkan sebagaiTableWriteProvisionedThroughputExceeded). Akar penyebabnya adalah Anda telah melampaui kapasitas throughput maksimum untuk nilai atau rentang kunci partisi tertentu, yang menunjukkan masalah partisi panas.

    Memahami hubungan antara elemen pengecualian ini membantu Anda menerapkan strategi mitigasi yang sesuai - dalam hal ini, menangani partisi panas daripada meningkatkan kapasitas penyediaan tabel secara keseluruhan.

Langkah 2 - Identifikasi dan analisis CloudWatch metrik terkait

  1. Identifikasi metrik Anda: Setiap alasan pelambatan di DynamoDB secara langsung sesuai dengan CloudWatch metrik tertentu yang dapat Anda pantau untuk melacak dan menganalisis peristiwa pelambatan. Anda dapat secara sistematis mendapatkan nama CloudWatch metrik yang sesuai dari alasan pelambatan.

  2. Cocokkan alasan pelambatan Anda dengan CloudWatch metrik yang sesuai menggunakan tabel referensi ini:

    Alasan pelambatan lengkap dan CloudWatch referensi metrik
    Kategori Alasan pelambatan CloudWatch Metrik utama
    Kapasitas yang disediakan terlampaui TableReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents
    TableWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents
    IndexReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents (GSI)
    IndexWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents (GSI)
    Batas partisi terlampaui TableReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents
    TableWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents
    IndexReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents (GSI)
    IndexWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents (GSI)
    Maksimum sesuai permintaan terlampaui TableReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents
    TableWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents
    IndexReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents (GSI)
    IndexWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents (GSI)
    Batas akun terlampaui TableReadAccountLimitExceeded ReadAccountLimitThrottleEvents
    TableWriteAccountLimitExceeded WriteAccountLimitThrottleEvents
    IndexReadAccountLimitExceeded ReadAccountLimitThrottleEvents (GSIs)
    IndexWriteAccountLimitExceeded WriteAccountLimitThrottleEvents (GSIs)

    Misalnya, jika Anda menerimaIndexWriteProvisionedThroughputExceeded, minimal, Anda harus memantau WriteProvisionedThroughputThrottleEvents CloudWatch metrik untuk indeks spesifik yang diidentifikasi dalamResourceArn.

  3. Pantau metrik ini CloudWatch untuk memahami frekuensi dan waktu peristiwa pelambatan, bedakan antara pelambatan baca dan tulis, identifikasi pola waktu saat pelambatan meningkat, dan lacak tren pemanfaatan kapasitas Anda.

    DynamoDB menerbitkan metrik rinci untuk setiap tabel dan indeks sekunder global. Metrik (ReadThrottleEvents,WriteThrottleEvents, danThrottledRequests) menggabungkan semua peristiwa pelambatan di seluruh tabel Anda dan indeksnya.

Langkah 3 - Identifikasi kunci yang dibatasi dan tingkat akses tinggi menggunakan CloudWatch Contributor Insights (untuk pembatasan terkait partisi)

Jika Anda mengidentifikasi masalah terkait partisi di Langkah 1 (seperti KeyRangeThroughputExceeded kesalahan), CloudWatch Contributor Insights for DynamoDB dapat membantu Anda mendiagnosis kunci spesifik mana yang mendorong lalu lintas Anda dan mengalami peristiwa pelambatan dalam tabel atau indeks Anda.

  1. Aktifkan Wawasan CloudWatch Kontributor untuk tabel atau indeks yang dibatasi berdasarkan tabel Anda. ResourceARN

    Anda dapat memilih mode tombol Throttled untuk fokus secara eksklusif pada tombol yang paling dibatasi. Mode ini sangat ideal untuk pemantauan berkelanjutan karena hanya memproses peristiwa saat pelambatan terjadi. Atau, mode tombol Diakses dan dibatasi membantu Anda mencari pola di kunci yang paling banyak diakses.

  2. Menganalisis laporan untuk mengidentifikasi pola bermasalah. Cari kunci dengan akses tinggi atau kecepatan pelambatan yang tidak proporsional, korelasi pelambatan dan pola lalu lintas. Anda dapat membuat dasbor terintegrasi yang menggabungkan grafik Contributor Insights dan metrik DynamoDB. CloudWatch

Untuk informasi rinci tentang mengaktifkan dan menggunakan CloudWatch Contributor Insights, lihat Menggunakan Contributor Insights for CloudWatch DynamoDB.

Langkah 4 - Tentukan solusi yang tepat

Setelah mendiagnosis penyebab spesifik pelambatan, terapkan solusi yang direkomendasikan berdasarkan konteks spesifik Anda. Solusi yang tepat bergantung pada beberapa faktor, termasuk skenario pelambatan Anda, mode kapasitas tabel, keputusan desain tabel dan kunci, pola akses dan efisiensi kueri, konfigurasi indeks global dan sekunder, serta arsitektur sistem dan titik integrasi secara keseluruhan.

Untuk solusi mendetail untuk mengatasi skenario pelambatan spesifik Anda, lihat bagian. Panduan resolusi pelambatan DynamoDB Sumber daya ini menyediakan strategi remediasi bertarget yang disesuaikan dengan alasan pembatasan khusus dan konfigurasi mode kapasitas Anda.

Langkah 5 - Pantau kemajuan Anda

  1. Lacak CloudWatch metrik Anda yang sesuai dengan skenario pelambatan Anda.

  2. Validasi bahwa strategi mitigasi Anda efektif dengan mengamati penurunan peristiwa pelambatan.