在没有开启Checkpoint的情况下,当作业重启时,历史数据是否会残留在内存中?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

在没有开启Checkpoint的情况下,当作业重启时,历史数据是否会残留在内存中?

Chris Guo

Hi

我的作业是运行在1.10.1, 使用的是event time ,没有开启checkPoint。每当作业重启一次,container memory usage会上涨2G,每重启一次就会上涨一些内存直到被OS kill。


历史数据的清理是在新event time到达之后调用 WindowOperator#onEventTime() 的clearAllState实现清理,如果作业重启,又没有开启checkpoint,尚未被处理的历史数据是否一直残留在内存中无法清理?


是否有哪位大佬可以帮忙解惑?

| |
a511955993
|
|
邮箱:[hidden email]
|

签名由 网易邮箱大师 定制
Reply | Threaded
Open this post in threaded view
|

回复:在没有开启Checkpoint的情况下,当作业重启时,历史数据是否会残留在内存中?

Chris Guo
这种现象只会出现在on rocksdb中。




| |
a511955993
|
|
邮箱:[hidden email]
|

签名由 网易邮箱大师 定制

在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
|
|
邮箱:[hidden email]
|

签名由 网易邮箱大师 定制
Reply | Threaded
Open this post in threaded view
|

Re: 在没有开启Checkpoint的情况下,当作业重启时,历史数据是否会残留在内存中?

Congxian Qiu
理论上作业重启后,会释放内存,这里的问题从描述看,重启后有内存没有释放。能否在重启后 dump 一下内存看看呢?
或者你这个问题能够完全重现吗?可否告知一下如何复现这个问题呢

Best,
Congxian


SmileSmile <[hidden email]> 于2020年7月3日周五 下午12:23写道:

> 这种现象只会出现在on rocksdb中。
>
>
>
>
> | |
> a511955993
> |
> |
> 邮箱:[hidden email]
> |
>
> 签名由 网易邮箱大师 定制
>
> 在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
> |
> |
> 邮箱:[hidden email]
> |
>
> 签名由 网易邮箱大师 定制
Reply | Threaded
Open this post in threaded view
|

回复:在没有开启Checkpoint的情况下,当作业重启时,历史数据是否会残留在内存中?

Chris Guo
作业运行在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
|
|
邮箱:[hidden email]
|

签名由 网易邮箱大师 定制

在2020年07月03日 14:02,Congxian Qiu 写道:
理论上作业重启后,会释放内存,这里的问题从描述看,重启后有内存没有释放。能否在重启后 dump 一下内存看看呢?
或者你这个问题能够完全重现吗?可否告知一下如何复现这个问题呢

Best,
Congxian


SmileSmile <[hidden email]> 于2020年7月3日周五 下午12:23写道:

> 这种现象只会出现在on rocksdb中。
>
>
>
>
> | |
> a511955993
> |
> |
> 邮箱:[hidden email]
> |
>
> 签名由 网易邮箱大师 定制
>
> 在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
> |
> |
> 邮箱:[hidden email]
> |
>
> 签名由 网易邮箱大师 定制
Reply | Threaded
Open this post in threaded view
|

Re: 在没有开启Checkpoint的情况下,当作业重启时,历史数据是否会残留在内存中?

Congxian Qiu
从现象看,应该是有内存泄漏,你需要看一下这些内存都是啥,然后才好定位是哪里的问题

checkpoint 是指 state 的一个快照,rocksdb 中存的是 state。理论上来说,作业 fail 了,之前 rocksdb
中的数据就没有了。新的作业是会使用新的 RocksDB

Best,
Congxian


SmileSmile <[hidden email]> 于2020年7月3日周五 下午2:15写道:

> 作业运行在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
> |
> |
> 邮箱:[hidden email]
> |
>
> 签名由 网易邮箱大师 定制
>
> 在2020年07月03日 14:02,Congxian Qiu 写道:
> 理论上作业重启后,会释放内存,这里的问题从描述看,重启后有内存没有释放。能否在重启后 dump 一下内存看看呢?
> 或者你这个问题能够完全重现吗?可否告知一下如何复现这个问题呢
>
> Best,
> Congxian
>
>
> SmileSmile <[hidden email]> 于2020年7月3日周五 下午12:23写道:
>
> > 这种现象只会出现在on rocksdb中。
> >
> >
> >
> >
> > | |
> > a511955993
> > |
> > |
> > 邮箱:[hidden email]
> > |
> >
> > 签名由 网易邮箱大师 定制
> >
> > 在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
> > |
> > |
> > 邮箱:[hidden email]
> > |
> >
> > 签名由 网易邮箱大师 定制
>