我们正在使用 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