我有一个flink作业一直崩溃。我在此post中提出了有关调试的问题。
此问题已通过为任务管理器增加内存来解决。然后,我在发生崩溃时检查了所有容器的与内存使用相关的指标,我发现其中两个确实具有Status.JVM.Memory.Direct.MemoryUsed
的异常值。我有一张图表:
jvm.memory.direct.memory_used.png
在Flink官方文档中,它显示为The biggest driver of Direct memory is by far the number of Flink’s network buffers, which can be configured.
,但是从任务日志中我没有看到与not enough network buffer
相关的任何内容。为了防止将来发生这种情况,我想详细了解这部分内存在Flink中的功能以及图像中这两个异常容器可能发生的情况。谢谢。
答案 0 :(得分:0)
首先,当它是OutOfMemoryError时,我还需要退出TM的行为而不记录任何问题。
第二,我在直接内存问题上的经验是它并没有由于网络缓冲区而耗尽,而是因为我使用的是调用已分配的直接内存的已编译C代码(在我的情况下为Fasttext)的代码...您确定没有类似的情况吗?发问,因为通常Flink可以避免过度分配内存,这很有益-通常您会遇到诸如“网络缓冲区没有足够的内存”之类的故障。