#java #out-of-memory #flume #flume-ng
Вопрос:
Я устраняю некоторые проблемы с памятью, с которыми я сталкиваюсь при отправке сообщений в Flume из некоторого кода Java.
Код запускает два EmbeddedAgent
s, каждый из которых имеет канал памяти и несколько приемников, указывающих на удаленный сервер.
Я прочитал в документации Flume о конфигурациях каналов памяти:
byteCapacity
Максимальное общее количество байтов памяти, разрешенное как сумма всех событий в этом канале. Реализация учитывает только тело события, (…). По умолчанию вычисленное значение равно 80% максимального объема памяти, доступного для JVM (т. е. 80% значения-Xmx, переданного в командной строке).
Из того, что я понимаю, это означает, что в худшем случае каждый канал будет использовать 80% Xmx, так что в моем случае 160% (2 агента), что, очевидно, приведет к ошибкам OOM.
Я прав?
Если это так, я полагаю, это означает, что я должен установить правильное значение для этой конфигурации (не заданное в моей текущей конфигурации), зная, что мой код на самом деле работает на двух каналах памяти?
Правка: мой вопрос предполагает, что capacity
настройки (максимальное количество событий в канале) довольно высоки, и ограничивающим фактором будет размер, а не количество событий.
Комментарии:
1. Я ничего не знаю об
Flume
этом , но это название «Канал памяти» заставляет меня думать, что это не та куча, о которой они говорят?2. Я так не думаю, исходя из своих наблюдений, но я уверен, что могу ошибаться.