我正在尝试调优使用FlinkOperator部署的flink作业的内存配置。下面是我正在使用的内存设置。如本文档所述,我只配置了全部内存。https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/memory/mem_setup_tm/
taskmanager.memory.process.size: "8000m"
taskmanager.memory.task.off-heap.size: "500m"
taskmanager.memory.jvm-metaspace.size: "250m"
当作业开始处理时,指标显示flink_taskmanager_Status_Flink_Memory_Managed_Used始终为零。其中flink_taskmanager_Status_Flink_Memory_Managed_Total设置为5G。
这个配置还好吗?(编辑)
发布于 2022-12-04 14:28:53
在我看来,Flink作业的内存配置是不正确的。您使用的内存设置仅定义Flink任务管理器可用的总内存,但不指定应如何使用该内存。
您需要指定用于不同用途的内存量,例如JVM堆、堆外内存和托管内存。可以通过设置以下配置选项来做到这一点:
taskmanager.memory.process.size
:此选项定义Flink任务管理器进程可用的总内存。它应该被设置为一个大于其他内存settings.taskmanager.memory.jvm-heap.size
:之和的值,这个选项定义了应该分配给JVM堆的内存量。这个内存由Flink运行时使用,并且应该足够大以满足Flink job.taskmanager.memory.task.off-heap.size
:的需要。这个选项定义了应该为Flink作业中的每个任务分配的堆外内存量。此内存用于无法存储在JVM heap.taskmanager.memory.jvm-metaspace.size
:上的数据结构和中间结果--该选项定义了应该分配给JVM元空间的内存量。此内存用于类元数据,并应设置为适合Flink作业的值。除了这些内存设置之外,还需要设置taskmanager.memory.managed.size
选项来定义为Flink作业中的每个任务分配的托管内存量
https://stackoverflow.com/questions/74677189
复制相似问题