#java #hadoop #memory-leaks #hdfs #namenode
#java #hadoop #утечки памяти #hdfs #namenode
Вопрос:
Запустив процедуру Hadoop namenode в JDK 1.8.0.92 с Xmx и Xmx = 75 Гб, мы наблюдали скачок объема системной памяти в течение x интервала. И постепенно произошел ООМ.
В процессе отладки мы обнаружили следующее:
RSS поднялся выше, чем Xmx
Это куча — нет, это не куча (можно увидеть использование в JMX, которое находится под контролем)
Это не куча или утечка — из дампа кучи и jmap -histo утечки не наблюдается.
Что тогда? Включен NMT в namenode proc env.
Что тогда? Можно видеть, что рост происходит во внутренней секции встроенной памяти, и картина следующая — когда количество потоков no достигает максимума, объем выделенной памяти увеличивается, и он увеличивается постепенно.
Исправления: Пробовал -XX: MaxDirectMemorySize = 3g (Без изменений, по-прежнему это нарушение лимита) Пробовал -Djdk.nio.maxCachedBufferSize (Пробовал с jdk1.8.0.192, при включении этой опции все еще наблюдается утечка) MALLOC_ARENA_MAX — По умолчанию для Hadoop-configs установлено значение 4.sh пробовал с 1 и 2, все еще происходит утечка.
Вопросы
Как управлять внутренним разделом встроенной памяти?
Как указать причину этой проблемы и использование этого внутреннего раздела?
Как определить значение Malloc в JVM?