笔者最近开始学习flink,但是flink的webui上各种指标错综复杂,在网上也没有找到一个比较详尽的资料,于是个人整理了一下关于flink中taskmanager的webui各个指标的含义,供大家参考。
注:括号中仅为个人理解
如下图,是一个flink任务中的某个taskmanager的ui
以下介绍顺序为从上到下,从左至右
overview
这个是整个taskmanager的总览信息
data port :数据端口
all slots :此 tm 具有的 slot 数 (顺便提一下,tm 数 = 最大并行度 / 用户设置的每个 tm 的slot 数)
free slots :此 tm 空闲的 slot 数
CPU Cores :此机器拥有的 vcores数 (yarn的概念,yarn允许这个节点最大给yarn使用的cpu数,即图中tm所在的节点中分配给yarn48个core)
Physical Memory :此机器拥有的内存 (yarn的概念,yarn允许这个节点最大给yarn使用的内存, 即yarn最多申请这台机器多少内存),对应NM参数yarn.nodemanager.resource.mem.mb
JVM Heap Size :是 jvm 堆内存 --- 这部分内存,由这个tm上的所有slot平均分。
Flink Managed Memory: 是flink单独划分出来的内存。个人理解:主要用于排序等操作,在批处理中,经常用到(在排序等中会使用)。在流处理中,几乎不会用到,流处理中(一般)是一个虚指的概念,除非配置了 taskmanager.memory.preallocate为 true。
Memory
JVM (Heap/Non-Heap)
Heap :堆内内存
Non-Heap :非堆内存
Total :总计
横行:
Committed :已经申请的内存(由于yarn启动container进程时,xmx xms值是一样的,所以container进程一启动,内存就已经全部申请)
Used : 已经使用的内存。插一句,可以看出此任务申请的内存并没有充分利用,不是很合理,大家后续可以看这些指标优化任务资源
Maximum : 内存最大值(可以看出,此值和Committed 的值是一样的)
Outside JVM
意为堆外内存,不多做赘述。
Network
Memory Segments
Memory Segments是flink管理内存的单位
Available:网络缓冲区netbuff申请的 Memory Segments 可用块数
Total :网络缓冲区netbuff申请的 Memory Segments 块数
插一句,可以看出图中可用的 Memory Segments 数量不多,说明netbuffer这块,内存利用率比较高。
Garbage Collection
PS_Scavenge ,PS_MarkSweep :两种垃圾回收
Count :垃圾回收触发的次数
Time :回收的累计时间
个人理解:以上两种垃圾回收,第一个是新生代的垃圾回收,次数比较多很正常。第二种是cms,只有在cms失败之后才会触发 full gc。这两种gc,都不是full gc。所以无需太过关注。
以上是笔者对于flink webui各个指标含义的理解,供大家参考。由于笔者水平有限,欢迎大家批评指正,感谢!