flink

指定TM内存模型的方式

整个TM内存模型可以通过三种方式来指定

    通过指定 taskmanager.memory.task.heap.size 和 taskmanager.memory.managed.size来确定
    通过指定 taskmanager.memory.flink.size 也就是 Total Flink Memory大小
    通过指定 * taskmanager.memory.process.size* 也就是 Total Process Memory大小

 

在生产环境中,如果作业并行度非常大(例如大于 500 甚至 1000),则需要调大 taskmanager.network.memory.floating-buffers-per-gate(例如从 8 调整到 1000)和 taskmanager.network.memory.buffers-per-channel(例如从 2 调整到 500),避免 Network Buffer 不足导致作业报错。

 

 JVM 运行时开销(JVM Overhead)

    除了上述描述的内存区域外,JVM 自己还有一小块 “自留地”,用来存放线程栈、编译的代码缓存、JNI 调用的库所分配的内存等等,Flink 配置参数是 taskmanager.memory.jvm-overhead.fraction,默认是 JVM 总内存的 10%。
    对于旧版本(1.9 及之前)的 Flink,RocksDB 通过 malloc 分配的内存也属于 Overhead 部分,而新版 Flink 把这部分归类到托管 内存(Managed),但由于 FLINK-15532 Enable strict capacity limit for memory usage for RocksDB [9] 问题仍未解决,RocksDB 仍然会少量超用一部分内存。
    因此在生产环境下,如果 RocksDB 频繁造成内存超用,除了调大 Managed 托管内存外,也可以考虑调大 Overhead 区空间,以留出更多的安全余量。
原文链接:https://blog.csdn.net/Direction_Wind/article/details/123178756

 

flink内存管理,设置思路,oom问题,一文全

https://blog.csdn.net/Direction_Wind/article/details/123178756

flink network buffer

https://blog.csdn.net/jiuweiC/article/details/119731455

Flink之Flink中内存模型全详解

https://blog.csdn.net/luoyepiaoxue2014/article/details/128080283

posted @ 2023-04-17 21:47  tonggc1668  阅读(31)  评论(0编辑  收藏  举报