View a markdown version of this page

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 pelambatan, DynamoDB menyediakan 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 tertentu dengan informasi diagnostik terperinci. Misalnya, di Jawa, ini termasukProvisionedThroughputExceededException,RequestLimitExceeded, atauThrottlingException.

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

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

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

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

  • ResourceType(Apa yang dibatasi): atau Table Index

  • OperationType(Operasi macam 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 seperti yang ditetapkan pada tingkat akun. Anda dapat meminta kenaikan 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 menaikkan nilai ini sendiri ke nilai apa pun hingga batas akun atau mengatur ke -1 untuk menunjukkan tidak ada batas yang disediakan 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 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. Penulisan ke OrderDateIndex sedang dibatasi karena konsumsi penulisan telah melebihi kapasitas tulis yang disediakan GSI yang dikonfigurasi.

Contoh 2: throughput On-demand maksimum 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 dibatasi karena melebihi batas throughput sesuai permintaan maksimum 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 throttling (baca atau tulis), dan jenis batas yang terlampaui (partisi, throughput yang disediakan, batas akun).

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

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

    Misalnya, pertimbangkan skenario ini di mana Anda menerima pengecualian berikut ProvisionedThroughputExceededException dengan alasan TableWriteKeyRangeThroughputExceeded pelambatan. ResourceLearn yang terpengaruh 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 tabel yang disediakan 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 memperoleh nama CloudWatch metrik yang sesuai dari alasan pembatasan.

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

    Alasan pelambatan lengkap dan referensi CloudWatch 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)
    On-demand maksimum terlampaui TableReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents
    TableWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents
    IndexReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents (GSI)
    IndexWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents (GSI)
    Batas akun terlampaui TableReadAccountLimitExceeded ReadAccountLimitThrottleEvents
    TableWriteAccountLimitExceeded WriteAccountLimitThrottleEvents
    IndexReadAccountLimitExceeded ReadAccountLimitThrottleEvents (GSI)
    IndexWriteAccountLimitExceeded WriteAccountLimitThrottleEvents (GSI)

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

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

    DynamoDB menerbitkan metrik terperinci 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 Con CloudWatch tributor Insights (untuk pelambatan terkait partisi)

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

  1. Aktif CloudWatch kan Wawasan Kontributor untuk tabel atau indeks yang dibatasi berdasarkan tabel atau indeks AndaResourceARN.

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

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

  3. Jika tidak ada tombol individual yang menunjukkan kecepatan akses atau pelambatan yang tinggi secara tidak proporsional, pelambatan rentang tombol mungkin disebabkan oleh akses berurutan yang tidak terbatas di berbagai tombol daripada satu tombol pintas. Saat Anda menjalankan Scan operasi lanjutan, batasi laju lalu lintas baca agar tetap di bawah maksimum per partisi 3.000 unit baca per detik untuk rentang kunci. Untuk mencapai throughput baca keseluruhan yang lebih tinggi, gunakan pemindaian paralel (tersegmentasi) untuk mendistribusikan lalu lintas baca lebih seragam di seluruh partisi. Demikian pula, menulis item dalam urutan kunci yang sama di mana mereka dikembalikan oleh Scan konsentrat menulis pada satu rentang kunci pada satu waktu dan dapat menyebabkan pelambatan rentang kunci ketika laju tulis ke rentang itu melebihi 1.000 unit tulis per detik. Rate-limit menulis ke rentang kunci tunggal untuk tetap di bawah batas itu.

Untuk informasi terperinci tentang mengaktifkan dan menggunakan Insights Kon CloudWatch tributor, lihat Menggunakan Insights Con CloudWatch tributor untuk DynamoDB.

Langkah 4 - Tentukan solusi yang tepat

Setelah mendiagnosis penyebab spesifik pelambatan, terapkan solusi yang disarankan berdasarkan konteks spesifik Anda. Solusi yang tepat tergantung 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, dan arsitektur sistem secara keseluruhan dan titik integrasi.

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

Langkah 5 - Pantau kemajuan Anda

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

  2. Validasikan bahwa strategi mitigasi Anda efektif dengan mengamati penurunan kejadian pelambatan.