Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
无限制的州增长
如果您的应用程序未正确处理过时的状态信息,则这些信息将不断积累并导致应用程序性能或稳定性出现问题。本节介绍这种情况的症状和故障排除步骤。
症状
这种情况可能具有以下症状:
该
lastCheckpointDuration
指标正在逐渐增加或激增。该
lastCheckpointSize
指标正在逐渐增加或激增。
原因和解决方案
以下情况可能会导致您的应用程序积累状态数据:
您的应用程序保留状态数据的时间超过了所需的时间。
您的应用程序使用持续时间过长的窗口查询。
您没有为状态数据设置 TTL。有关更多信息,请参阅 Apache Flink 文档中的状态存活时间 (TTL)
。 您正在运行的应用程序依赖于 Apache Beam 版本 2.25.0 或更高版本。你可以选择退出新版本的读取转换,方法是 BeamApplicationProperties使用关键实验和值来扩展你的读取转换
use_deprecated_read
。有关更多信息,请参阅 Apache Beam 文档。
有时,应用程序会面临不断增加的状态规模增长,从长远来看,这是不可持续的(毕竟 Flink 应用程序可以无限期运行)。有时,这可以追溯到应用程序将数据存储在状态中,而旧信息没有正确过期。但是有时候人们对 Flink 能提供的功能抱有不合理的期望。应用程序可以在跨几天甚至几周的大时间窗口内使用聚合。AggregateFunctions
此外,在使用流程函数实现自定义运算符时,应用程序需要从状态中删除业务逻辑不再需要的数据。在这种情况下, time-to-live可以使用 st at
出于调试目的,禁用增量检查点以更快地验证检查点大小是否确实减小或稳定下来(并避免 RockSB 中压缩的影响)将很有用。不过,这需要向服务团队创建工单。