检查点操作已超时 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

检查点操作已超时

如果您的应用程序未经过优化或未正确配置,则检查点可能会失败。本节介绍这种情况的症状和故障排除步骤。

症状

如果应用程序的检查点失败,则numberOfFailedCheckpoints将大于零。

检查点失败可能是由于直接故障(例如应用程序错误)或暂时性故障(例如应用程序资源耗尽)所致。检查您的应用程序日志和指标是否存在以下症状:

  • 您的代码中存在错误。

  • 访问应用程序的依赖服务时出错。

  • 序列化数据时出错。如果默认序列化程序无法序列化您的应用程序数据,则应用程序将失败。有关在应用程序中使用自定义序列化器的信息,请参阅 Apache Flink 文档中的 自定义序列化器

  • 内存不足错误。

  • 以下指标出现峰值或稳定增长:

    • heapMemoryUtilization

    • oldGenerationGCTime

    • oldGenerationGCCount

    • lastCheckpointSize

    • lastCheckpointDuration

有关监控检查点的更多信息,请参阅《Apache Flink 文档》中的监控检查点

原因和解决方案

您的应用程序日志错误消息显示了直接失败的原因。暂时性故障可能有以下原因:

  • 您的应用程序的 KPU 配置不足。有关增加应用程序预置的信息,请参阅扩展

  • 您的应用程序状态大小太大。您可以使用该lastCheckpointSize指标监控应用程序的状态大小。

  • 您的应用程序的状态数据在密钥之间的分布不均衡。如果您的应用程序使用KeyBy运算符,请确保传入的数据在密钥之间平均分配。如果将大部分数据分配给单个密钥,则会造成瓶颈,从而导致故障。

  • 您的应用程序面临内存或垃圾收集背压。监控应用程序的heapMemoryUtilizationoldGenerationGCTime、和oldGenerationGCCount是否出现峰值或稳步增加的值。