【发布时间】:2018-11-21 14:17:57
【问题描述】:
我们使用 Flink 流在单个集群上运行一些作业。我们的工作是使用rocksDB 来保存一个状态。 集群配置为在 3 个单独的 VM 上使用单个 Jobmanager 和 3 个 Taskmanager 运行。 每个 TM 都配置为使用 14GB 的 RAM 运行。 JM 配置为以 1GB 运行。
我们遇到了 2 个与内存相关的问题: - 使用 8GB 堆分配运行 Taskmanager 时,TM 用尽了堆内存,我们得到了堆内存不足的异常。我们对这个问题的解决方案是将堆大小增加到 14GB。似乎这个配置解决了这个问题,因为我们不再因为堆内存不足而崩溃。 - 尽管如此,在将堆大小增加到 14GB(每个 TM 进程)后,操作系统内存不足并终止 TM 进程。 RES 内存随着时间的推移而增加,每个 TM 进程达到约 20GB。
1.问题是我们如何预测物理内存的最大总量和堆大小配置?
2。由于我们的内存问题,使用 Flink 托管内存的非默认值是否合理?这种情况下的指导方针是什么?
更多详情: 每个 Vm 配置有 4 个 CPU 和 24GB 的 RAM 使用 Flink 版本:1.3.2
【问题讨论】:
-
在不知道您的代码的情况下很难说。我建议您在某些运算符中使用一些
Raw State:ci.apache.org/projects/flink/flink-docs-release-1.3/dev/stream/…。您能确定问题出现在哪个运算符中并显示一些代码吗?
标签: apache-flink flink-streaming