作业运行在k8s上,这个现象可以重现,目前我这边有多份数据join的作业基本都会有这个问题。步骤如下: 1. 使用eventtime,水位线设置为数据时间-3分钟,状态使用rocksdb,不开启checkpoint,设置内存limit 2. 作业运行一段时间。 3. kill 其中一个pod,作业fail 4. k8s自动拉起该pod,观察其他pod的内存使用,会上涨。运行一段时间然后很容易超过limit被os kill 5. 陷入被重复kill的死循环。
解决方法:销毁集群,重构即可。 观察过heap的内存,没有问题。 被os kill怀疑是offheap超用,offheap没有正常释放。 有一个疑问,如果没有开启ck,作业恢复后是重新开始的,重启前的旧数据在rocksdb中是在如何清理的呢? | | a511955993 | | 邮箱:[email protected] | 签名由 网易邮箱大师 定制 在2020年07月03日 14:02,Congxian Qiu 写道: 理论上作业重启后,会释放内存,这里的问题从描述看,重启后有内存没有释放。能否在重启后 dump 一下内存看看呢? 或者你这个问题能够完全重现吗?可否告知一下如何复现这个问题呢 Best, Congxian SmileSmile <[email protected]> 于2020年7月3日周五 下午12:23写道: > 这种现象只会出现在on rocksdb中。 > > > > > | | > a511955993 > | > | > 邮箱:[email protected] > | > > 签名由 网易邮箱大师 定制 > > 在2020年07月03日 11:21,SmileSmile 写道: > > Hi > > 我的作业是运行在1.10.1, 使用的是event time ,没有开启checkPoint。每当作业重启一次,container memory > usage会上涨2G,每重启一次就会上涨一些内存直到被OS kill。 > > > 历史数据的清理是在新event time到达之后调用 WindowOperator#onEventTime() > 的clearAllState实现清理,如果作业重启,又没有开启checkpoint,尚未被处理的历史数据是否一直残留在内存中无法清理? > > > 是否有哪位大佬可以帮忙解惑? > > | | > a511955993 > | > | > 邮箱:[email protected] > | > > 签名由 网易邮箱大师 定制
