

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Kinesis Data Streams プロデューサーのトラブルシューティング
<a name="troubleshooting-producers"></a>

**Topics**
+ [プロデューサーアプリケーションの書き込みの速度が予想よりも遅い](#producer-writing-at-slower-rate)
+ [不正な KMS マスターキーアクセス許可エラーが表示される](#unauthorized-kms-producer)
+ [プロデューサーのその他の一般的な問題のトラブルシューティング](#misc-troubleshooting-producer)

## プロデューサーアプリケーションの書き込みの速度が予想よりも遅い
<a name="producer-writing-at-slower-rate"></a>

**Topics**
+ [サービスの制限を超過している](#service-limits-exceeded)
+ [プロデューサーを最適化したい](#producer-optimization)
+ [`flushSync()` オペレーションの誤用](#misuse-tag)

### サービスの制限を超過している
<a name="service-limits-exceeded"></a>

サービスの制限を超過している 呼び出しによって制限が異なることに注意して、[クォータと制限](service-sizes-and-limits.md) を確認してください。たとえば、書き込みと読み取りのシャードレベルの制限は最もよく知られていますが、以下のようなストリームレベルの制限もあります。
+ [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)
+ [DeleteStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html)
+ [ListStreams](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html)
+ [GetShardIterator](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html)
+ [MergeShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html)
+ [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)
+ [DescribeStreamSummary](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamSummary.html)

`CreateStream`、`DeleteStream`、`ListStreams`、 `GetShardIterator`、`MergeShards` のオペレーションは、1 秒あたり 5 個の呼び出しに制限されます。`DescribeStream` オペレーションは、1 秒あたり 10 個の呼び出しに制限されます。`DescribeStreamSummary` オペレーションは、1 秒あたり 20 個の呼び出しに制限されます。

このような呼び出しが原因でない場合は、選択したパーティションキーを使用してすべてのシャードに *put* オペレーションを均等に分散できること、どのパーティションキーもサービスの制限に達していないことを確認します。これには、ピークスループットを測定して、ストリームのシャードの数を考慮する必要があります。ストリーム管理の詳細については、[Kinesis Data Streams を作成して管理する](working-with-streams.md)を参照してください。

**ヒント**  
シングルレコードオペレーション [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) では、スループットスロットリングの計算結果がキロバイト単位に四捨五入されます。マルチレコードオペレーション [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) では、各セルのレコードの累計が四捨五入されます。たとえば、`PutRecords` は 1.1 KB になる 600 レコードのリクエストをスロットリングしません。

### プロデューサーを最適化したい
<a name="producer-optimization"></a>

プロデューサーの最適化を始める前に、次の重要なタスクを完了しておく必要があります。最初に、レコードのサイズと 1 秒あたりのレコード数で必要となるスループットピークを特定します。次に、制限要素としてのストリーム容量を除外します ([サービスの制限を超過している](#service-limits-exceeded))。ストリーム容量を除外している場合は、以下のプロデューサーの 2 つの一般的なタイプのトラブルシューティングのヒントと最適化のガイドラインを使用します。

**ラージプロデューサー**

ラージプロデューサーは、通常オンプレミスサーバーまたは Amazon EC2 インスタンスから実行されます。ラージプロデューサーからより高いスループットを必要とするお客様は、通常レコードあたりのレイテンシーに注意を払います。レイテンシーを処理する戦略として、お客様がレコードをマイクロバッチ/バッファできる場合は、[Amazon Kinesis Producer Library](https://docs.aws.amazon.com/kinesis/latest/dev/developing-producers-with-kpl.html) (高度な集約ロジックがある) を使用するか、マルチレコードオペレーション [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) を使用するか、レコードをより大きいファイルに集約してからシングルレコードオペレーション [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) を使用します。バッチ/バッファを使用できない場合は、複数のスレッドを使用して Kinesis Data Streams サービスに同時に書き込みます。 AWS SDK for Java およびその他の SDKsには、ごくわずかなコードでこれを行うことができる非同期クライアントが含まれています。

**スモールプロデューサー**

スモールプロデューサーは、通常モバイルアプリケーション、IoT デバイス、またはウェブクライアントです。モバイルアプリの場合は、 AWS Mobile SDKs で `PutRecords`オペレーションまたは Kinesis Recorder を使用することをお勧めします。詳細については、 AWS Mobile SDK for Android 「 入門ガイド」および AWS Mobile SDK for iOS 「 入門ガイド」を参照してください。モバイルアプリケーションは、本来断続的な接続を処理する必要があり、`PutRecords` のようなバッチ put タイプを必要とします。何らかの理由でバッチを使用できない場合は、上記のラージプロデューサーの情報を参照してください。プロデューサーがブラウザの場合、生成されるデータの量は通常非常に小さなものとなります。ただし、アプリケーションの重要なパスに *put* オペレーションを配置することはお勧めしません。

### `flushSync()` オペレーションの誤用
<a name="misuse-tag"></a>

`flushSync()` を誤って使用すると、書き込みパフォーマンスに大きな悪影響を及ぼす可能性があります。`flushSync()` オペレーションは、KPL アプリケーション終了時にバッファされたすべてのレコードが送信されることを保証するための、シャットダウン時専用の操作です。このオペレーションを書き込みのたびに実行するように実装している場合、1 回の書き込みごとに約 500 ミリ秒 の大きな遅延が追加されます。書き込みパフォーマンスの不要な遅延を避けるため、`flushSync()` はアプリケーションのシャットダウン時のみ実行されるように実装されていることを確認してください。

## 不正な KMS マスターキーアクセス許可エラーが表示される
<a name="unauthorized-kms-producer"></a>

このエラーは、プロデューサーアプリケーションが KMS マスターキーに対するアクセス許可なしで、暗号化されたストリームに書き込みを行うときに発生します。KMS キーにアクセスする許可をアプリケーションに割り当てるには、[KMS でのキーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)および[AWS KMS での IAM ポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)を参照してください。

## プロデューサーのその他の一般的な問題のトラブルシューティング
<a name="misc-troubleshooting-producer"></a>
+ [Kinesis データストリームで 500 内部サーバーエラーが返されるのはなぜですか?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-500-error/)
+ [Flink から Kinesis Data Streams に書き込むときのタイムアウトエラーのトラブルシューティング方法を教えてください。](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-flink-timeout/)
+ [Kinesis Data Streams のスロットリングエラーのトラブルシューティング方法を教えてください。](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling-errors/)
+ [Kinesis Data Streams がスロットリングされるのはなぜですか?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling/)
+ [KPL を使用して、データレコードを Kinesis Data Streams に入れるにはどうすればよいですか?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-kpl/)