Flink入门精通100篇(十二)-如何分析和定位 Flink 作业 OOM 问题?

网友投稿 918 2022-05-30

前言

生产环境,我们的 Flink 作业偶尔会出现 heap OOM,那么当出现这种情况我们会怎么办?通常来说会通过 jmap 命令去将作业的 heap dump 一份文件出来,可是 jmap 导出的文件我们也看不懂啊,那么该怎么分析呢?今天推荐 memory analyzer(mat)这个工具,让他帮助我们来观察程序的内存分布情况吧。

MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析。下面来看看要怎么做呢,也许对你有用。官方文档:http://help.eclipse.org/luna/index.jsp?topic=/org.eclipse.mat.ui.help/welcome.html

造成OutOfMemoryError原因一般有2种:

1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;

Flink从入门到精通100篇(十二)-如何分析和定位 Flink 作业 OOM 问题?

2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小(-Xmx与-Xms),检查代码是否存在对象生命周期太长、持有状态时间过长的情况。

jmap 命令生成堆信息

jmap -dump:live,format=b,file=E:/jmap/heap.dump pid

Flink

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:⭐博客专家之路(已达成)
下一篇:详解position:sticky
相关文章