我的工作一直很忙。我在这篇文章中问了一个关于调试的问题。
通过增加任务管理器的内存,解决了这个问题。然后,我检查了在崩溃发生时所有容器的内存使用率相关指标,发现其中有两个容器的内存使用率值不正常 Status.JVM.Memory.Direct.MemoryUsed
. 我有一个图表:jvm.memory.direct.memory\u 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中这部分内存的作用,以及图像中这两个离群值容器的情况。谢谢您。
1条答案
按热度按时间t5zmwmid1#
首先,我还需要tms在没有记录问题的情况下退出的行为,当它是outofmemoryerror时。
其次,我对直接内存问题的经验是,它不是由于网络缓冲区而耗尽的,而是因为我使用的代码调用了编译的c代码(在我的例子中是fasttext),而编译的c代码是分配直接内存的…你确定没有类似的情况吗?问这个问题是因为flink通常擅长于不过度分配内存—通常会出现“没有足够的内存用于网络缓冲区”之类的故障。