You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by Lei Wang <le...@gmail.com> on 2021/03/10 08:22:56 UTC

flink standalone 模式运行任务的问题

java.lang.OutOfMemoryError: Metaspace. The metaspace out-of-memory error
has occurred. This can mean two things: either the job requires a larger
size of JVM metaspace to load classes or there is a class loading leak. In
the first case 'taskmanager.memory.jvm-metaspace.size'

按照日志中的建议,我把 metaspace size 从 256M 调整到了 512M,但还是出现了这个错误。
经过我的观察,在新提交任务的时候比较容易出现这个问题,任务一直正常跑很少出现这个错误。
我 flink 是 standAlone 模式部署的。就两个机器, 每台机器 一个 taskManager,总共运行了 9 个 job,所有 job
都打在了一个 jar 中,jar 大小为 42M.

我自己的猜想是程序正常运行时 metaspace 基本已经满了,再新提交一个任务导致又重新初始化 jar 中所有类的 符号
引用空间不够导致了这个错误。不知道这个想法对不对。

但我还有一个疑问,standalone 模式不同  job 实际上跑在了相同的 TaskMgr 进程上,只有一个 JVM,怎么实现代码隔离呢?
比如下面的例子:

job1 和  job2 打在了同一个 jar 中,都用到了代码中的一个 static 变量。
kill 掉 job1, 更改了 这个 static 变种的值,再提交 job1,那更改后的static 变量值 对 job2 会生效吗?

谢谢,
王磊