Apache flink 在ApacheFlink中进行数据处理后,内存不会下降
我正在使用broadcastprocess函数执行简单的模式匹配。我正在广播大约60种模式。进程完成后,内存不会下降,我正在使用flink配置文件Apache flink 在ApacheFlink中进行数据处理后,内存不会下降,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我正在使用broadcastprocess函数执行简单的模式匹配。我正在广播大约60种模式。进程完成后,内存不会下降,我正在使用flink配置文件env.java.opts=“-XX:+UseG1GC”中的垃圾收集设置来执行GC,但它也不工作。但CPU百分比在完成数据处理后出现。我每2分钟做一次检查点,我的状态后端是文件系统。下面是内存和CPU使用情况的屏幕截图 在您共享的图表中,我没有发现任何令人惊讶或有问题的地方。接收模式后,BroadcastProcessFunction的每个实例都将保
env.java.opts=“-XX:+UseG1GC”
中的垃圾收集设置来执行GC,但它也不工作。但CPU百分比在完成数据处理后出现。我每2分钟做一次检查点,我的状态后端是文件系统。下面是内存和CPU使用情况的屏幕截图
在您共享的图表中,我没有发现任何令人惊讶或有问题的地方。接收模式后,BroadcastProcessFunction的每个实例都将保留所有模式的一个副本,这样会消耗一些内存 如果我理解正确的话,听起来情况是,在处理数据以匹配这些模式时,内存会继续增加,直到POD崩溃并出现内存不足错误。各种因素可以解释这一点:
- 如果您的模式涉及随着时间的推移匹配一系列事件,那么您的模式匹配引擎必须为每个部分匹配保持状态。如果没有超时子句来确保最终清除部分匹配,这可能会导致组合爆炸
- 如果您正在进行密钥分区处理,并且您的密钥空间是无限的,那么您可能会保留过时密钥的状态
- 文件系统状态后端有相当大的开销。您可能低估了它需要多少内存