Metric指标分类与采集

Flink RestAPI介绍与使用

Checkpoint监控与调优

反压监控与原理

Flink内存配置与调优

主要是对TaskManager内存配置管理

TaskManager内存指标监控

堆内存
堆外内存
Network
MemorySegments

Framework vs Task Memory

image.png
区别:是否计入 Slot 资源

  • 总用量受限:
    • -Xmx = Framework Heap + Task Heap
    • -XX:MaxDirectMemorySize= Framewok Off-Heap + Task Off- Heap
  • 无隔离

    • 后续社区会实现动态资源隔离(flip-56)

      Heap VS Off-Heap Memory

  • Heap

    • 堆内存,Java 对象数据
    • HeapStateBackend
  • Off-Heap
    • Direct
      • DirectByteBuffer

ByteBuffer.allocateDirect()

  1. - MappedBytebuffer

FileChannel.map()

  • Native
    • JNI,C/C++,Python
  • 不区分 Direct 和 Native

    Network Memory

  • Direct Memory
  • 主要用于网络数据传输
  • 特点:

    • TaskManager 的各个 Slot 之间 没有隔离
    • 根据作业的拓扑确定 Network Memory
    • 主要决定于 Buffer数量

      Managed Memory

  • Native Memory 类型

  • 主要用于
    • RocksDBStateBackend
    • Batch Operator
  • 特点:
    • 同一 TaskExecutor 的各个 Slot 之间严格隔离
    • 多点少点都能跑,与性能挂钩
  • RocksDB 内存限制

    • state.backend.rocksdb.memory.managed(default:true)
    • 设定RocksDB使用内存为Managed Memory 大小
    • 目的:防止容器内存超限
    • Standalone 可关闭限制

      JVM Metaspace & Overhead

  • JVM Metaspace

    • 存放 JVM 加载类的元数据
    • 加载的类越多需要的内存空间越大
  • JVM Overhead

    • Native Memory
    • 用于其他 JVM 内存开销