应用程序正在重启 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

应用程序正在重启

如果你的应用程序不健康,那么它的 Apache Flink 作业会继续失败并重新启动。本节介绍了此情况的症状和故障排除步骤。

征兆

这种情况可能有以下症状:

  • 这些区域有:FullRestarts指标不是零。此指标表示自您启动应用程序以来应用程序作业重新启动的次数。

  • 这些区域有:Downtime指标不是零。此指标表示应用程序在FAILING要么RESTARTING状态。

  • 应用程序日志包含的状态更改为RESTARTING要么FAILED. 您可以使用以下方法查询应用程序日志中的这些状态更改:CloudWatchLogs Insights 查询:分析错误:应用程序相关故障.

原因和解决方案

以下情况可能会导致应用程序变得不稳定并反复重新启动:

  • 操作员正在抛出异常:如果未处理应用程序中的操作符的任何异常,应用程序将进行故障转移(解释操作符无法处理该故障)。应用程序从最新的检查点重新启动,以保持 “精确一次” 的处理语义。因此,Downtime在这些重新启动期间不为零。为了防止发生这种情况,我们建议您在应用程序代码中处理任何可重试的异常。

    您可以查询应用程序日志以确定应用程序状态是否从 RUNNING 变为 FAILED,以调查发生这种情况的原因。有关更多信息,请参阅 分析错误:应用程序相关故障

  • Kinesis Data Streams 未正确配置:如果应用程序的源或接收器是 Kinesis 数据流,请检查指标对于直播ReadProvisionedThroughputExceeded要么WriteProvisionedThroughputExceeded错误消息。

    如果看到这些错误,可以通过增加 Kinesis 流的分片数量来增加该流的可用吞吐量。有关更多信息,请参阅 。如何更改 Kinesis Data Streams 中打开的分片的数量?.

  • 其他来源或汇没有正确配置或不可用:检查是否正确预置应用程序预置源和接收器。检查是否使用应用程序中使用的任何源或接收器(例如其他Amazon服务或外部源或目标)预置得当,它们没有受到读取或写入限制,或者定期不可用。

    如果您遇到与依赖服务相关的吞吐量相关问题,请增加这些服务的可用资源,或调查任何错误或不可用的原因。

  • 运营商没有正确配置:如果应用程序中某个操作员的线程上的工作负载未正确分配,则操作员可能会超载,应用程序可能会崩溃。有关调整运算符并行度的信息,请参阅正确管理运营商扩展.

  • 应用程序失败DaemonException:如果您使用的是 1.11 之前的 Apache Flink 版本,则此错误会出现在应用程序日志中。您可能需要升级到 Apache Flink 的更高版本,以便使用 0.14 或更高版本的 KPL 版本。

  • 应用程序失败TimeoutException、FlinkException,或者RemoteTransport异常:如果任务管理器崩溃,这些错误可能会出现在应用程序日志中。如果应用程序过载,任务管理器可能会遇到 CPU 或内存资源压力,从而导致他们失败。

    这些错误可能类似以下内容:

    • java.util.concurrent.TimeoutException: The heartbeat of JobManager with id xxx timed out

    • org.apache.flink.util.FlinkException: The assigned slot xxx was removed

    • org.apache.flink.runtime.io.network.netty.exception.RemoteTransportException: Connection unexpectedly closed by remote task manager

    要排查此情况,请检查以下内容:

    • 检查您的CloudWatchCPU 或内存使用量异常峰值的指标。

    • 检查应用程序的吞吐量问题。有关更多信息,请参阅 排查性能问

    • 检查应用程序日志是否存在应用程序代码引发的未处理的异常。

  • 应用程序失败JaxbAnnotation找不到模块错误:如果您的应用程序使用 Apache Beam 但没有正确的依赖关系或依赖关系版本,则会出现此错误。使用 Apache Beam 的 Kinesis Data Analytics 应用程序必须使用以下版本的依赖项:

    <jackson.version>2.10.2</jackson.version> ... <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jaxb-annotations</artifactId> <version>2.10.2</version> </dependency>

    如果您没有提供正确的版本jackson-module-jaxb-annotations作为显式依赖项,您的应用程序从环境依赖项加载它,由于版本不匹配,应用程序会在运行时崩溃。

    有关将 Apache Beam 与 Kinesis Data Analytics 一起使用的更多信息,请参阅使用CloudFormation使用 Kinesis Data Analytics Apache Beam.