作业运行在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]
> |
>
> 签名由 网易邮箱大师 定制

回复