Понимание Status.JVM.Memory.Direct.MemoryUsed в Flink - PullRequest
0 голосов
/ 14 мая 2019

У меня есть работа, которая продолжала падать. Я задал вопрос по отладке, который в этом посте .

Проблема была решена путем увеличения памяти для менеджеров задач. Затем я проверил метрики, связанные с использованием памяти для всех контейнеров, в то время, когда произошел этот сбой, и я увидел, что 2 из них имели ненормальное значение для 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 и что может произойти с этими двумя выделенными контейнерами из изображения. Спасибо.

1 Ответ

0 голосов
/ 15 мая 2019

во-первых, мне также нужно поведение TM, завершающих работу без какой-либо регистрации проблемы, когда это OutOfMemoryError.

Во-вторых, мой опыт работы с проблемами с прямой памятью заключается в том, что она не исчерпалась из-за сетевых буферов, а скорее потому, что я использовал код, который вызывался для скомпилированного кода C (Fasttext, в моем случае), который былвыделение прямой памяти ... вы уверены, что у вас нет аналогичной ситуации?На вопрос, потому что обычно Flink хорош в том, чтобы не перераспределять память - обычно вы получаете ошибку типа «Недостаточно памяти для сетевых буферов».

...