开发者社区> 问答> 正文

taskmanager.heap.mb 对于 jvm 启动堆大小不生效怎么办?

最近我在弄 Flink on k8s,使用的 Flink 版本为 Flink 1.6。作业模式为 standalone per job 模式。

我在创建启动 jobmanager 的时候,设置的 taskmanager.heap.mb 为 2000 mb,虽然在 flink web ui 上面看到的 jobmanager 的配置, taskmanager.heap.mb 的确是 2000mb,在我启动 taskmanager deployment 的时候,我登录到 其中一个 pod 上看,发现 taskmanager 启动的 -xms 和 -xmx 都是 922mb。

我将 taskmanager.heap.mb 设置为 1000 mb,停止我的作业,重启,同样,登录到taskmanager 其中一个 pod,-xms 和 -xmx 都是 922mb,也就是说 设置的taskmanager.heap.mb 没有对 taskmanager 启动的 jvm 堆没有生效。

我看了源码,flink on k8s ,standalone per job 模式,taskmanager 会使用 taskmanager.sh 来启动。在 taskmanager.sh 中,taskmanager heap mb 是根据镜像中的,flink dist 目录下面,conf 目录中的 flink-conf.yaml 里面的配置来启动。

我现在在打镜像的时候,也会把flink-dist 目录打进去,同样把 taskmanager.heap.mb动态传入到 flink-conf.yaml中,但是最终我在启动我的作业的时候,登录到 taskmanager 的一个 pod 上面查看,发现其 flink-conf.yaml 里面, taskmanager.heap.mb 始终是 1024.

是不是在什么地方,把 taskmanager.heap.mb 写死到了 flink-conf.yaml 中呢?*来自志愿者整理的FLINK邮件归档

展开
收起
又出bug了-- 2021-12-03 17:37:21 923 0
1 条回答
写回答
取消 提交回答
  • 应该没有其他地方去写 flink-conf.yaml,能把具体用来打镜像、动态写配置的命令或者脚本发一下吗?

    另外你这个问题还有一种解决方案,是 taskmanager.heap.mb 通过 -D 参数传给 taskmanager.sh。可以在 docker-compose.yaml 中 taskmanager command 处追加 -Dtaskmanager.heap.mb=2000m*来自志愿者整理的FLINK邮件归档

    2021-12-03 18:40:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JVM实战 立即下载
JVM的GC 立即下载
基于JVM的脚本语言开发、运用实践 立即下载