Amazon Kinesis Data Streams プロデューサーのトラブルシューティング
以下のトピックでは、Amazon Kinesis Data Streams プロデューサーの一般的な問題に対するソリューションを提供します。
プロデューサーアプリケーションの書き込みの速度が予想よりも遅い
書き込みのスループットが予想よりも遅くなる最も一般的な理由は次のとおりです。
サービスの制限を超過している
サービスの制限を超過している 呼び出しによって制限が異なることに注意して、クォータと制限 を確認してください。たとえば、書き込みと読み取りのシャードレベルの制限は最もよく知られていますが、以下のようなストリームレベルの制限もあります。
CreateStream
、DeleteStream
、ListStreams
、 GetShardIterator
、MergeShards
のオペレーションは、1 秒あたり 5 個の呼び出しに制限されます。DescribeStream
オペレーションは、1 秒あたり 10 個の呼び出しに制限されます。DescribeStreamSummary
オペレーションは、1 秒あたり 20 個の呼び出しに制限されます。
このような呼び出しが原因でない場合は、選択したパーティションキーを使用してすべてのシャードに put オペレーションを均等に分散できること、どのパーティションキーもサービスの制限に達していないことを確認します。これには、ピークスループットを測定して、ストリームのシャードの数を考慮する必要があります。ストリーム管理の詳細については、Kinesis Data Streams を作成して管理するを参照してください。
ヒント
シングルレコードオペレーション PutRecord では、スループットスロットリングの計算結果がキロバイト単位に四捨五入されます。マルチレコードオペレーション PutRecords では、各セルのレコードの累計が四捨五入されます。たとえば、PutRecords
は 1.1 KB になる 600 レコードのリクエストをスロットリングしません。
プロデューサーを最適化したい
プロデューサーの最適化を始める前に、次の重要なタスクを完了しておく必要があります。最初に、レコードのサイズと 1 秒あたりのレコード数で必要となるスループットピークを特定します。次に、制限要素としてのストリーム容量を除外します (サービスの制限を超過している)。ストリーム容量を除外している場合は、以下のプロデューサーの 2 つの一般的なタイプのトラブルシューティングのヒントと最適化のガイドラインを使用します。
ラージプロデューサー
ラージプロデューサーは、通常オンプレミスサーバーまたは Amazon EC2 インスタンスから実行されます。ラージプロデューサーからより高いスループットを必要とするお客様は、通常レコードあたりのレイテンシーに注意を払います。レイテンシーを処理する戦略として、お客様がレコードをマイクロバッチ/バッファできる場合は、Kinesis Producer Library (高度な集約ロジックがある) を使用するか、マルチレコードオペレーション PutRecords を使用するか、レコードをより大きいファイルに集約してからシングルレコードオペレーション PutRecord を使用します。バッチ/バッファを使用できない場合は、複数のスレッドを使用して Kinesis Data Streams サービスに同時に書き込みます。AWS SDK for Java とその他の SDK には、ごく少数のコードでこれを実行できる非同期クライアントが含まれます。
スモールプロデューサー
スモールプロデューサーは、通常モバイルアプリケーション、IoT デバイス、またはウェブクライアントです。モバイルアプリケーションの場合は、PutRecords
オペレーションを使用するか、AWS モバイル SDK の Kinesis レコーダーを使用することをお勧めします。詳細については、AWS Mobile SDK for Android 入門ガイドおよび AWS Mobile SDK for iOS 入門ガイドを参照してください。モバイルアプリケーションは、本来断続的な接続を処理する必要があり、PutRecords
のようなバッチ put タイプを必要とします。何らかの理由でバッチを使用できない場合は、上記のラージプロデューサーの情報を参照してください。プロデューサーがブラウザの場合、生成されるデータの量は通常非常に小さなものとなります。ただし、アプリケーションの重要なパスに put オペレーションを配置することはお勧めしません。
不正な KMS マスターキーアクセス許可エラーが表示される
このエラーは、プロデューサーアプリケーションが KMS マスターキーに対するアクセス許可なしで、暗号化されたストリームに書き込みを行うときに発生します。KMS キーにアクセスする許可をアプリケーションに割り当てるには、AWS KMS でのキーポリシーの使用およびAWS KMS での IAM ポリシーの使用を参照してください。