Пару дней назад мы смонтировали выделенный сервер graylog2 (с rails unicorn, mongodb и eleasticsearch) на виртуальной машине с 2 ГБ оперативной памяти.
Потребление ОЗУ продолжает расти, я довольно часто получаю предупреждение о высоком потреблении.
Я пытаюсь оценить, сколько оперативной памяти мне понадобится для централизации всех системных журналов и журналов рельсов для 25+ серверов, у кого-нибудь есть опыт в этом?
В качестве альтернативы, есть ли у кого-нибудь способ сохранить graylog2 и его зависимые приложения (unicorn, mongodb, eleasticsearch) под 2 ГБ ОЗУ?
РЕДАКТИРОВАТЬ 2013-02-20: Оказывается, оперативная память не является проблемой после небольшого увеличения до 2,25 ГБ. Проблема теперь в загрузке процессора, у нас грейлог-сервер, который потребляет почти 100% всех 8 ядер процессора.
MongoDB будет стремиться к 100% резидентной памяти с течением времени, пока набор данных (данные плюс индексы) превышает доступную RAM. В конечном итоге он обнаружит «устойчивое состояние», при котором новые (недавно использованные) данные выгружаются в ОЗУ или хранятся в нем, а старые данные (наименее недавно использованные) выгружаются. Единственный способ избежать этого - иметь набор данных, размер которого меньше доступной памяти, иначе это произойдет в конечном итоге (хотя это может занять часы / дни / недели / месяцы в зависимости от того, как быстро вы получаете доступ к данным).
Это не повод для беспокойства и похоже на то, как есть ошибочное сообщение вокруг файлов с отображением памяти и потребления памяти в целом - ядро управляет распределением памяти и будет выгружать данные MongoDB, если это необходимо другим процессам. Однако это хорошо иметь в виду при написании таких вещей, как аварийные сигналы высокого использования памяти - в большинстве случаев для систем MongoDB они бессмысленны. Было бы гораздо лучше смотреть на частоту отказов страниц или дисковый ввод-вывод в качестве прокси (см. Метрики в MMS для большего).