为什么我的 Kinesis 数据流会返回一个 500 内部服务器错误?

上次更新时间:2020 年 6 月 4 日

我的 Amazon Kinesis 数据流返回了 500 内部服务器错误或 503 服务器不可用错误。如何检测和解决Amazon Kinesis Data Streams 中的这些错误?

简短描述

如果您正在向某个 Kinesis 数据流生成数据,则可能出现以下内部错误中的一种:

  • PutRecordPutRecords 返回 AmazonKinesisException 500 错误或 AmazonKinesisException 503 错误,并且错误率持续几分钟高于 1%。
  • SubscribeToShard.SuccessGetRecords 返回 AmazonKinesisException 500 错误或 AmazonKinesisException 503 错误,并且错误率持续几分钟高于 1%。

要对这些内部错误进行问题排查,您可以执行以下操作:

  • 计算错误率。
  • 实施重试机制。

解决方法

计算错误率

监控选项卡查找 PutRecord.SuccessGetRecord.Success 时间段的显著下降。如果您发现明显的下降,则计算错误率以确定 Kinesis 数据流问题的严重度。

要计算错误率,您需要计算 PutRecord.SuccessGetRecord.Success 的平均值。

实施重试机制

计算出错误率后,确认您的错误率是否低于 0.1%。Kinesis Data Streams 允许低错误率的高吞吐量写入。平均错误率通常低于 0.01%。

如果您自己编写使用者和创建器应用程序,则需在您的应用程序代码中实施重试机制。有关实施重试机制的更多信息,请参阅使用 Amazon Kinesis Producer Library 实施高效、可靠的创建器中的重试部分。

如果您的错误率持续几分钟超过 1%,则联系 AWS Support。您需要提供以下信息:

  • 用于向/从 Data Streams 读取或写入数据的应用程序
  • 您的 Kinesis 数据流中的分片数量
  • 服务器端加密设置
  • 受到影响的特定分片 ID
  • 观察到成功率下降的时间段
  • 报告内部错误的请求 ID

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?