Kesalahan pengecualian throughput yang disediakan - Amazon Kinesis Data Streams

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

Kesalahan pengecualian throughput yang disediakan

Throughput yang disediakan melebihi kesalahan pengecualian (HTTP 400) terjadi ketika tingkat permintaan untuk aliran Kinesis melampaui batas throughput dari satu atau lebih pecahan. Setiap pecahan memiliki batas kapasitas baca, dan tulis tertentu, dan melebihi batas tersebut memicu pengecualian ini. Skenario yang mengarah ke pengecualian ini meliputi: lonjakan mendadak dalam konsumsi atau konsumsi data, kapasitas pecahan yang tidak mencukupi untuk volume data yang sedang diproses, atau distribusi kunci partisi yang tidak merata.

Rekomendasi untuk menangani pengecualian
  • Menerapkan mekanisme back-off dan coba ulang eksponensial.

  • Tingkatkan jumlah pecahan untuk mengakomodasi throughput yang lebih tinggi.

  • Pastikan bahwa ada distribusi kunci partisi yang tepat.

  • Pantau metrik aliran.

Selain itu, menggunakan mode kapasitas Kinesis sesuai permintaan membantu menyesuaikan beban kerja secara otomatis, dan meminimalkan terjadinya pengecualian ini. Untuk informasi selengkapnya, lihat Apa itu AWS Fault Injection Service?

catatan

Masalah distribusi yang tidak tepat berada di luar kemampuan mode on-demand dari penskalaan otomatis.

Untuk melakukan eksperimen dasar
  1. Gunakan metrik dasar: catat pola throughput normal sebelum pengujian.

  2. Buat eksperimen: gunakan aws:kinesis:inject-api-provisioned-throughput-exception tindakan.

  3. Konfigurasikan intensitas: mulai dengan pelambatan permintaan 25%.

  4. Pantau tanggapan: verifikasi logika coba ulang dengan back-off eksponensial.

  5. Validasi penskalaan: konfirmasikan bahwa auto-scaling memicu aktivasi.

  6. Periksa alarm: pastikan CloudWatch alarm berjalan seperti yang diharapkan.

Aplikasi harus menerapkan strategi, monitor, dan ReadProvisionedThroughputExceeded metrik back-off yang tepatWriteProvisionedThroughputExceeded, dan memicu penskalaan shard bila sesuai.

Detail tindakan
  • Jenis Sumber Daya: IAM Peran ARN

  • Operasi Target:PutRecord,PutRecords, GetRecords

  • Kode Kesalahan: ProvisionedThroughputExceededException (HTTP 400)

  • Deskripsi: mensimulasikan skenario di mana tingkat permintaan melebihi batas kapasitas pecahan, menguji pelambatan aplikasi, dan respons penskalaan.

Parameter
  • IAM Role ARN: peran yang digunakan aplikasi Anda untuk operasi Kinesis Data Streams.

  • Operasi: operasi target:PutRecord,PutRecords,GetRecords.

  • Daftar Sumber Daya: nama aliran tertentu atau pengidentifikasi pecahan.

  • Durasi: durasi percobaan, yaitu durasi dari satu menit hingga 12 jam. Di AWS FIS API, nilainya adalah string dalam format ISO 8601. Misalnya, PT1 M mewakili satu menit. Di AWS FIS konsol, Anda memasukkan jumlah detik, menit, atau jam.

  • Intensitas: persentase permintaan untuk throttle.

Izin yang diperlukan
  • kinesis:InjectApiError

Contoh template percobaan

Contoh berikut menunjukkan pengecualian throughput yang disediakan untuk semua permintaan hingga 5 aliran Data Kinesis dengan tag yang ditentukan. AWS FIS memilih aliran untuk mempengaruhi secara acak. Setelah 5 menit kesalahan dihapus.

{ "description": "Kinesis stream experiment", "targets": { "KinesisStreams-Target-1": { "resourceType": "aws:kinesis:stream", "resourceTags": { "tag-key": "tag-value" }, "selectionMode": "COUNT(5)" } }, "actions": { "kinesis": { "actionId": "aws:kinesis:stream-provisioned-throughput-exception", "description": "my-stream", "parameters": { "duration": "PT5M", "percentage": "100", "service": "kinesis" }, "targets": { "KinesisStreams": "KinesisStreams-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name", "tags": {}, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "fail" } }

Contoh izin peran percobaan

Izin berikut memungkinkan Anda menjalankan aws:kinesis:stream-provisioned-throughput-exception dan aws:kinesis:stream-expired-iterator-exception tindakan pada aliran tertentu yang memengaruhi 50% permintaan.