Amazon Kinesis データストリームが 500 Internal Server Error または 503 Service Unavailable Error を返してきます。Amazon Kinesis Data Streams 内でこれらのエラーを検出してトラブルシューティングする方法を教えてください。
簡単な説明
Kinesis データストリームに生成する場合、次のいずれかの内部エラーが発生する可能性があります。
- PutRecord または PutRecords は、 AmazonKinesisException 500 または AmazonKinesisException 503 エラーを数分間に 1% を超えるレートで返す。
- SubscribeToShard.Success または GetRecords は、 AmazonKinesisException 500 または AmazonKinesisException 503エラーを数分間に 1% を超えるレートで返す。
これらの内部エラーをトラブルシューティングするには、以下を実行します。
- エラー率を計算します。
- 再試行メカニズムを実装します。
解決方法
エラー率を計算する
[モニタリング] タブで、 PutRecord.Success または GetRecord.Success のタイムウィンドウが大幅に低下しているかどうか確認します。大幅な低下が見られる場合は、エラー率を計算して Kinesis データストリームの問題の重大性を判断します。
エラー率を計算するには、 PutRecord.Success と GetRecord.Success の平均値を計算します。
再試行メカニズムを実装する
エラー率を計算したら、エラー率が 0.1% を下回っているかどうかを確認します。Kinesis Data Streams では、低いエラー率で高スループットの書き込みが可能です。平均エラー率は、通常 0.01% 未満です。
独自のコンシューマーまたはプロデューサーを記述した場合は、アプリケーションコードに再試行メカニズムを実装します。再試行メカニズムの実装の詳細については、「Amazon Kinesis プロデューサーライブラリを使用して効率的で信頼性の高いプロデューサーを実装する」の再試行セクションを参照してください。
エラー率が数分にわたって 1% を超えた場合は、AWS サポートにお問い合わせください。その際、以下の情報を提供してください。
- データストリームとの間でデータを読み書きするために使用するアプリケーション
- Kinesis データストリームのシャード数
- サーバー側の暗号化設定
- 影響を受ける特定のシャード ID
- 成功率の低下が確認される期間
- 内部障害が発生しているリクエスト ID
関連情報
Amazon Kinesis Producer Library を使用してプロデューサーを開発する
KCL 2.x コンシューマーの開発