无限制状态增长 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

无限制状态增长

如果您的应用程序没有正确处置过时的状态信息,它将持续积累,并导致应用程序性能或稳定性问题。本节介绍了此情况的症状和故障排除步骤。

征兆

这种情况可能出现以下症状:

  • 这些区域有:lastCheckpointDuration指标正在逐渐增加或激增。

  • 这些区域有:lastCheckpointSize指标正在逐渐增加或激增。

原因和解决方案

以下情况可能会导致您的应用程序累积州数据:

  • 您的应用程序保留状态数据的时间超过了所需的时间。

  • 您的应用程序使用持续时间太长的窗口查询。

  • 你没有为州数据设置 TTL。有关更多信息,请参阅 。状态生存时间 (TTL)中的Apache Flink.

  • 您运行的应用程序依赖于 Apache Beam 2.25.0 版本。您可以通过以下方式选择退出新版本的读转换扩展 Beam 应用程序属性有关键的实验和价值use_deprecated_read. 有关更多信息,请参阅 。Apache Beam.

有时,应用程序面临不断增长的状态规模增长,从长远来看是不可持续的(毕竟 Flink 应用程序无限期运行)。有时,这可以追溯到存储状态数据的应用程序,而没有正确老化旧信息。但是有时候对 Flink 可以提供的东西有不合理的期望。应用程序可以在跨越数天甚至几周的大时间窗口内使用聚合。除非AggregregatFuncate用于允许增量聚合,Flink 需要使整个窗口的事件保持状态。

此外,在使用流程函数实现自定义运算符时,应用程序需要从业务逻辑不再需要的状态中删除数据。在那种情况下,状态生存时间可用于根据处理时间自动删除数据的老化。Kinesis Data Analytics 正在使用增量检查点,因此状态 ttl 基于RockSDB 压缩. 只有在进行压缩操作后,您才能观察到状态大小的实际减少(以检查点大小表示)。特别是对于 200 MB 以下的检查点,由于状态即将到期,您不可能观察到检查点大小缩小的情况。但是,保存点基于不包含旧数据的状态的干净副本,因此您可以在 Kinesis Data Analytics 中触发快照以强制删除过时的状态。

出于调试目的,禁用增量检查点以更快地验证检查点大小实际上减小还是稳定(并避免 RockSB 中压缩的影响)是有意义的。但是,这需要向服务团队提供票证。