磁盘io问题引发的Flink集群血案

目录

  • 背景
  • 过程
  • 结论
  • 解决方案

背景

  • 公司的Flink集群是yarn session模式部署的,也就是这个集群是所有作业共享的一个flink集群
  • 5.7号22:38分的时候有告警提示作业重启了,因为之前有几次重启没有恢复,所以这次重点排查重启未恢复原因

过程

  • 先在JobManager的logs查看对应日志,日志比较多,是点击下载按钮然后在linux上wget下载下来。因为是session模式所以重启的时候application_id都没变


    JobManager.png
  • 在JobManager里面对应时间看到,是某个taskManager心跳上报失败了,于是在日志里面再次找container_xxxxxxxxx这个taskManager相关信息,没啥特别的,只是找到了container_xxxxxxxxx@ 对应的机器ip xxxx,别的地方也能找到就是了,这边捞日志顺带看下心跳上报错误的ip
2025-05-07 22:38:04,382 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Job xxx(xxxx) switched from state RUNNING to FAILING.
java.util.concurrent.TimeoutException: Heartbeat of TaskManager with id container_xxxxxxxxx timed out.
        at org.apache.flink.runtime.jobmaster.JobMaster$TaskManagerHeartbeatListener.notifyHeartbeatTimeout(JobMaster.java:1656)
        at org.apache.flink.runtime.heartbeat.HeartbeatManagerImpl$HeartbeatMonitor.run(HeartbeatManagerImpl.java:339)

结论

  • 找到对应心跳上报失败的ip之后,上机器看linux日志,并查看监控看cpu 内存 io等,发现cpu 内存使用量看着正常,但是io util有问题
 grep "May  7 22:" /var/log/messages
超时.png

ioutil.png
  • 可以看到ambari-agent (hadoop相关)的 metrics_monitor.py 脚本bug或依赖问题,反复崩溃导致 abrt记录core文件,abrt来不及清理,/var/spool/abrt被 crash dump 文件撑爆导致 I/O爆炸、负载爆表、abrt进程死锁加剧系统瓶颈,导致的io util被干爆,从而导致系统响应慢,导致心跳上报问题

解决方案

  • 解决方案:/var/spool/abrt/单独挂载,或者设置系统级core dump限制或者限制/etc/abrt/abrt-action-save-package-data.conf arbt的dump大小
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容