flink内存管理
JVM 存在的几个问题:
- Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)就够了。
- Full GC 会极大地影响性能,尤其是为了处理更大数据而开了很大内存空间的JVM来说,GC 会达到秒级甚至分钟级。
- OOM 问题影响稳定性。OutOfMemoryError是分布式计算框架经常会遇到的问题,当JVM中所有对象大小超过分配给JVM的内存大小时,就会发生OutOfMemoryError错误,导致JVM崩溃,分布式框架的健壮性和性能都会受到影响。
flink内存管理针对实时场景做了哪些优化
积极的堆外内存管理,因为流处理注重低延迟,为每一条要处理的数据在堆内存上创建对象会触发频繁的gc,导致处理停滞
- flink在堆外开辟network buffer(专门存放缓冲数据)
- 开辟managed memory,用于排序,缓存中间值
怎么定位背压
flink拓扑图,Flink的下游算子无法及时处理上游的消息时会出现反压的提示。反压提示一般有OK,LOW,HIGH三种状态。某个算子的BackPressure指标如果是HIGH,说明后面的算子存在性能问题。在任务性能调优时,对于串在一