Flink元空间内存溢出

一.问题现象

flink运行一会就报心跳超时 数据量不是很大

版本 1.10

taskmanager.err日志

web界面日志报心跳超时

二.问题定位

1. 得到taskmanager的pid

进入到tm的web界面查看运行在哪台机器上,并且得到端口号为40002

在slave4上输入以下命令即可得到进程id为24047

netstat -anp | grep 40002

2.进入到slave4节点上使用jstat -gc 进程id 1000 查看gc情况

从下图看出

S0C:s0区的大小

S1C: s1区的大小

S0U: S0区使用大小

Ec : 伊甸园区的大小

OC :老年代大小

OU:老年代使用了多少

MC:元空间大小

MU:元空间使用了多大

YGC:年轻代 gc次数

YGCT: 年轻代gc 时间

FGC :FULL gc 次数

FGCT: full gc 时间

从下图可以看出 Fgc 3700多次~ 到4000多次和 Ygc差不多次数。

并且 老年代还有很多资源,新生代也有很多资源。没理由会执行Fullgc。

注意:该任务id和第1步查看到的任务id不是同一个第一步只是说一下怎么得到pid。

3.使用jstat -gccause 9678 1000

metadata gc threshold, Last dicth collection

元数据GC阈值,从这里看出是元空间太小导致,并且从上上图看到元空间大小几乎快满了。

元空间介绍 https://www.cnblogs.com/williamjie/p/9558136.html

从tm的log查看发现元空间 是90多M。flink1.10默认元空间大小是256M(该问题暂时不清楚是由什么原因导致,待查清楚原因)

三.问题解决

1. 编辑flinkconf.yaml增加env.java.opts: -XX:MaxMetaspaceSize=256M配置,这样可以覆盖原来的90多M的配置,然后重新提交任务

2. 再次监控gc是否正常

Fgc4次,Ygc 1次。

3. 任务运行三小时再次监控

full gc 次数还是四次

4.还原配置换一个groupid消费同样的topic然后提交任务

经过测试 还原配置之后 又会存在 一直full gc 问题,然后 tm心跳超时。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值