翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
プロビジョンドスループット例外エラー
Kinesis ストリームに対するリクエストレートが 1 つ以上のシャードのスループット制限を超えた場合、プロビジョンドスループット超過例外エラー (HTTP 400) が発生します。各シャードには読み取りおよび書き込みの容量制限があり、その制限を超えるとこの例外が発生します。この例外が発生する主なシナリオには、データインジェストまたは消費の急増、処理中のデータ量に対して不十分なシャード容量、またはパーティションキーの不均等な分散などがあります。
例外の処理に関する推奨事項
-
指数バックオフと再試行メカニズムを実装します。
-
スループットの増加に対応できるように、シャード数を増やします。
-
パーティションキーが適切に分散されていることを確認します。
-
ストリームメトリクスをモニタリングします。
さらに、Kinesis のオンデマンドキャパシティモードを使用すると、ワークロードが自動的に調整され、この例外の発生を最小限に抑えることができます。詳細については、「What is AWS Fault Injection Service?」を参照してください。
注記
不適切な分散による問題は、オンデマンドモードの自動スケーリング機能の対象外です。
基本的な実験を実行するには
ベースラインメトリクスを使用する: テストを実施する前に、通常時のスループットパターンを記録します。
実験を作成する:
aws:kinesis:inject-api-provisioned-throughput-exceptionアクションを使用します。強度を設定する: まずはリクエストスロットリングを 25% に設定します。
レスポンスをモニタリングする: 指数バックオフを使用して再試行ロジックを検証します。
スケーリングを検証する: 自動スケーリングによってアクティベーションがトリガーされることを確認します。
アラームを確認する:
CloudWatchアラームが想定どおりに動作していることを確認します。
アプリケーションは、適切なバックオフ戦略を実装し、WriteProvisionedThroughputExceeded メトリクスおよび ReadProvisionedThroughputExceeded メトリクスをモニタリングし、必要に応じてシャードスケーリングをトリガーする必要があります。
アクションの詳細
-
リソースタイプ: IAM ロール ARN
-
ターゲットオペレーション:
PutRecord、PutRecords、GetRecords -
エラーコード:
ProvisionedThroughputExceededException(HTTP 400) -
説明: リクエストレートがシャードの容量制限を超えるシナリオをシミュレートし、アプリケーションのスロットリングおよびスケーリング応答をテストします。
パラメータ
-
IAM ロール ARN: アプリケーションが Kinesis Data Streams オペレーションに使用するロール。
-
オペレーション: ターゲットオペレーション:
PutRecord、PutRecords、GetRecords。 -
リソースリスト: 特定のストリーム名またはシャード識別子。
-
期間: 実験期間。1 分から 12 時間です。 AWS FIS API では、値は ISO 8601 形式の文字列です。例えば、PT1M は 1 分を表します。 AWS FIS コンソールで、秒数、分数、または時間数を入力します。
-
強度: スロットリングするリクエストの割合。
必要なアクセス許可
-
kinesis:InjectApiError
実験テンプレートの例
次の例は、指定されたタグを持つ最大 5 つの Kinesis Data ストリームに対するプロビジョニングされたスループット例外を示しています。 は、ランダムに影響するストリーム AWS FIS を選択します。5 分後に障害が除去されます。
{ "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" } }
実験ロールのアクセス許可の例
次のアクセス許可により、リクエストの 50% に影響する特定のストリームで aws:kinesis:stream-provisioned-throughput-exception および aws:kinesis:stream-expired-iterator-exception のアクションを実行できます。