Java Apache Beam与Flink Runner内存消耗高问题

Java Apache Beam与Flink Runner内存消耗高问题,java,apache-flink,apache-beam,flink-streaming,Java,Apache Flink,Apache Beam,Flink Streaming,ApacheBeam的2.28.0 java sdk正在与flink runner一起用于我们的管道。我们有两条管道: 卡夫卡源码->转换->使用固定窗口聚合-> 卡桑德拉水槽 卡夫卡来源->转型->卡桑德拉汇 在这两个管道中,对高内存消耗的观察结果是相似的。使用的部署平台是kubernetes 在内存优化练习期间,提供了精确的任务管理器内存配置,以确保容器内存不超过任务管理器的总进程内存。 这是提供的配置文件: 这是task manager pod中的jvm调试日志: 如您所见,堆/非堆/

ApacheBeam的2.28.0 java sdk正在与flink runner一起用于我们的管道。我们有两条管道:

  • 卡夫卡源码->转换->使用固定窗口聚合-> 卡桑德拉水槽
  • 卡夫卡来源->转型->卡桑德拉汇
  • 在这两个管道中,对高内存消耗的观察结果是相似的。使用的部署平台是kubernetes

    在内存优化练习期间,提供了精确的任务管理器内存配置,以确保容器内存不超过任务管理器的总进程内存。 这是提供的配置文件:

    这是task manager pod中的jvm调试日志:

    如您所见,堆/非堆/直接内存处于控制状态

    现在,奇怪/错误的部分是容器内存在不断增加,并且超出了整个进程内存:

    此外,用户代码非常简单,为了证明用户代码中没有问题,在原生flink sdk上构建了相同的管道。指数级的记忆增长消失了,并且得到了很好的控制

    使用完全相同的业务逻辑检查本机flink的配置:

    taskmanager.memory.process.size:800m taskmanager.memory.flink.size:570m taskmanager.memory.task.heap.size:200m taskmanager.memory.task.off-heap.size:50m taskmanager.memory.managed.size:0m taskmanager.memory.jvm-metaspace.size:130m taskmanager.memory.jvm-header.min:20m taskmanager.memory.jvm-header.max:320m taskmanager.debug.memory.log:false env.java.opts.taskmanager:“-Xms300m-Xmx328m”

    此外,任务管理器吊舱内存使用稳定,并遵守配置设置的边界: