美文网首页
flink问题总结(3) 重启任务CPU爆满问题分析

flink问题总结(3) 重启任务CPU爆满问题分析

作者: ZYvette | 来源:发表于2020-03-29 19:41 被阅读0次

    请移步 flink问题总结目录 (不断更新中)

    问题原因:

    提交flink任务,代码修改之后,任务重启之后,数据延迟严重,处理不完

    问题分析:

    任务是正常的,但是发生了被压,没有任务ERROR。
    1.首先查看CPU和内存:
    机器内存只使用了三分之二,但是CPU从60%达到90%


    image.png

    2.分析CPU消耗在哪里了:
    用的arthas,打的火焰图


    image.png

    可以发现,左边是flink任务代码,但是右边GC代码占用大量CPU,
    查看GC日志,发现Full GC 频率很大,基本上一两分钟一次。
    3.GC 频繁,说明要么内存不够要么就是发生了内存泄漏。但是我将内存改大之后并没有解决问题,仍然是偶然重启之后会发生CPU徒增。说明可能是内存泄漏。
    4.用MAT工具分析了当前内存状态。


    Leak Suspects分析

    其中这几个都是一个问题,都是我使用的GuavaCache,占用了大量内存。


    例如
    说明GuavaCache在任务停止的时候并没有被垃圾回收。

    解决办法:

    在任务停止时,在每个function的close方法里,调用cache的clear方法,并将指针指向null。重启之后观察了一下,在多次重启之后,CPU正常,未出现上述问题,垃圾回收正常。

    参考: 1 .如何避免内存泄漏:https://blog.csdn.net/xidiancyp/article/details/51418158
    2.CPU过高如何判断:https://www.cnblogs.com/breeze-24/p/9098978.html

    1. 如何处理内存满了:

    1、待运行稳定后GC之后用jmap抓取内存快照
    2、重新运行可能产生内存泄露的代码
    3、GC到稳定之后再次抓取内存快照
    4、对比2次快照就可知道了

    相关文章

      网友评论

          本文标题:flink问题总结(3) 重启任务CPU爆满问题分析

          本文链接:https://www.haomeiwen.com/subject/nbiuuhtx.html