开发者社区> 问答> 正文

flink on yarn 内存

大家好:          我有个flink on yarn的内存问题,flink版本是1.7.2,因此没有新的内存模型。在on yarn模式下,taskmanager.heap.size设定的是container的内存大小,当container内存超了后会被kill掉。我发现taskmanager.heap.size = xmx+maxDirectMemorySize,而默认情况下,xmx = taskmanager.heap.size - cutoff - network,也就是说maxDirectMemorySize = cutoff + network。network的确是受maxDirectMemorySize控制。问题是,cutoff包含了哪些内存?cutoff包含的内存都受maxDirectMemorySize控制吗?我感觉cutoff包含的内存并不完全受maxDirectMemorySize控制,例如metaspace还有其他运行时空间,这样的话实际消耗的内存可能会大于container的内存,造成kill。*来自志愿者整理的flink邮件归档

展开
收起
毛毛虫雨 2021-12-07 12:33:44 687 0
1 条回答
写回答
取消 提交回答
  • 你的理解没有错。cutoff 包含的既有 direct 内存也有 native 内存,native 内存是不受 maxDirectMemorySize 控制的。所以严格来说,是存在超用的可能性的。

    我们无法准确知道 cutoff 内存中 direct/native 分别是多少,因此只能根据 direct 内存可能使用的最大值(即假设 cutoff 全部为 direct 内存)去设置 maxDirectMemorySize。如果设置的 maxDirectMemorySize 比实际需要的 direct 内存小,是一定会触发 OOM 的;反之如果设置的 maxDirectMemorySize 比实际需要的 direct 内存大,却不一定会用满 maxDirectMemorySize 指定的内存大小,因为即使没有达到上限,不用的 direct 内存还是会随着 GC 被释放掉。*来自志愿者整理的flink

    2021-12-07 15:35:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云服务器ECS内存增强型实例re6全新发布 立即下载
Docker on Yarn 微服务实践 立即下载
深度学习+大数据-TensorFlow on Yarn 立即下载