记一次flink资源使用优化

发布于:2025-07-23 ⋅ 阅读:(26) ⋅ 点赞:(0)

一.现状分析

现有任务的资源配置如下,根据ui监控中Garbage Collection可以发现,此任务频繁的发生GC,且老年代GC时间较久
taskmanager资源监控.png

二.整体memory使用分析如下

  1. Framework Heap(框架堆内存)用于Flink框架自身的堆内存(如JobManager和TaskManager的元数据管理、调度器等)。

  2. Task Heap(任务堆内存) 指标值:4.12GB / 76% 使用(3.14GB/4.12GB) 作用: 用于Flink任务执行时的堆内存(如Kafka消费者、Paimon写入算子、状态后端缓存等)。
    当前分析: 使用率接近高风险阈值(>70%),导致频繁Full GC,出现OutOfMemoryError问题

  3. Managed Memory(托管内存) 指标值:3.50GB / 0% 使用(0B/3.50GB) 作用: Flink管理的堆外内存,用于状态后端(如RocksDB的缓存)和批处理操作。
    当前分析:状态后端使用的是FsStateBackend,占用的是Task Heap,此处未被使用

  4. Framework Off-Heap(框架堆外内存) 指标值:128MB / N/A 作用: Flink框架使用的堆外内存(如Netty网络缓冲区元数据)。
    当前分析: 默认配置足够,无需调整。

  5. Task Off-Heap(任务堆外内存) 指标值:0B / N/A 作用: 任务执行时的堆外内存(如自定义算子的Native库)。
    当前分析: 未启用,说明任务未使用堆外状态或自定义算子。无需调整

  6. Network(网络内存) 指标值:896MB / 0.59% 使用(5.28MB/896MB) 作用: 用于任务之间的网络数据传输(如Shuffle、广播等)。
    当前分析: 问题:使用率过低(<1%),存在资源浪费。

  7. JVM Metaspace(元空间) 指标值:256MB / 40.23% 使用(103MB/256MB) 作用: 存储JVM类元数据(如加载的类、方法信息)。
    当前分析: 使用率正常,无需调整。保持默认,除非出现Metaspace OOM。

  8. JVM Overhead(JVM开销内存) 指标值:1.00GB / N/A 作用: 预留的JVM内部开销内存(如线程栈、JNI等)。
    当前分析: 默认配置足够,无需调整。

三.最终优化措施

减少了Managed Memory和Network内存,增大Task Heap内存,效果如下图监控所示,大大减少了GC的数量,留有足够的Task Heap内存保证任务正常运行

flink的taskmanager资源优化后监控.png


网站公告

今日签到

点亮在社区的每一天
去签到