Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
检查点操作已超时
如果您的应用程序未经过优化或未正确配置,则检查点可能会失败。本节介绍这种情况的症状和故障排除步骤。
症状
如果应用程序的检查点失败,则numberOfFailedCheckpoints
将大于零。
检查点失败可能是由于直接故障(例如应用程序错误)或暂时性故障(例如应用程序资源耗尽)所致。检查您的应用程序日志和指标是否存在以下症状:
您的代码中存在错误。
访问应用程序的依赖服务时出错。
序列化数据时出错。如果默认序列化程序无法序列化您的应用程序数据,则应用程序将失败。有关在应用程序中使用自定义序列化程序的信息,请参阅 Apache Flink 文档中的数据类型和序列化
。 内存不足错误。
以下指标出现峰值或稳定增长:
heapMemoryUtilization
oldGenerationGCTime
oldGenerationGCCount
lastCheckpointSize
lastCheckpointDuration
有关监控检查点的更多信息,请参阅 Apache Flink 文档中的监控检查
原因和解决方案
您的应用程序日志错误消息显示了直接失败的原因。暂时性故障可能有以下原因:
您的应用程序KPU配置不足。有关增加应用程序预置的信息,请参阅在 Apache Flink 的托管服务中实现应用程序扩展。
您的应用程序状态大小太大。您可以使用该
lastCheckpointSize
指标监控应用程序的状态大小。您的应用程序的状态数据在密钥之间的分布不均衡。如果您的应用程序使用
KeyBy
运算符,请确保传入的数据在密钥之间平均分配。如果将大部分数据分配给单个密钥,则会造成瓶颈,从而导致故障。您的应用程序面临内存或垃圾收集背压。监控应用程序的
heapMemoryUtilization
、oldGenerationGCTime
、和oldGenerationGCCount
是否出现峰值或稳步增加的值。