Kinesis データストリームが 500 Internal Server Error を返すのはなぜですか?

最終更新日: 2020 年 6 月 4 日

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.SuccessGetRecord.Success の平均値を計算します。

再試行メカニズムを実装する

エラー率を計算したら、エラー率が 0.1% を下回っているかどうかを確認します。Kinesis Data Streams では、低いエラー率で高スループットの書き込みが可能です。平均エラー率は、通常 0.01% 未満です。

独自のコンシューマーまたはプロデューサーを記述した場合は、アプリケーションコードに再試行メカニズムを実装します。再試行メカニズムの実装の詳細については、「Amazon Kinesis プロデューサーライブラリを使用して効率的で信頼性の高いプロデューサーを実装する」の再試行セクションを参照してください。

エラー率が数分にわたって 1% を超えた場合は、AWS サポートにお問い合わせください。その際、以下の情報を提供してください。

  • データストリームとの間でデータを読み書きするために使用するアプリケーション
  • Kinesis データストリームのシャード数
  • サーバー側の暗号化設定
  • 影響を受ける特定のシャード ID
  • 成功率の低下が確認される期間
  • 内部障害が発生しているリクエスト ID