Flink实时统计任务CPU异常排查与解决方案
一、核心原因分析
资源配置不合理
-
- CPU核数与并行度不匹配:TaskManager的taskmanager.numberOfTaskSlots设置过高,导致单个节点负载过载(如32核节点设置2个slot被多个任务占用,总需求超过物理CPU核数)。
- 内存与CPU分配不均:内存不足引发频繁GC,间接导致CPU利用率飙升(如Full GC占用大量CPU时间)。
代码逻辑问题
-
- 复杂计算或死循环:自定义函数(如MapFunction或ProcessFunction)中存在未优化的循环逻辑或递归调用。
- 高频状态操作:频繁访问或更新状态(如ValueState),引发底层RocksDB的I/O压力间接影响CPU。
并行度设置不当