yopp
объём памяти зависит от того как данные используются, но в среднем надо рассчитывать что памяти должно быть не меньше чем размер индексов
yopp
А это обычно 10-25% от размера данных
Anonymous
у меня база просто на запись
yopp
Дайте монге пару гигабайт памяти
yopp
Монга меньше гига это не очень идея
Anonymous
Дайте монге пару гигабайт памяти
так она будет дальше и дальше кушать память
yopp
По-моему в WT в принципе меньше 512мб не умеет
Anonymous
по добавляю новых доках
Anonymous
Так зарежь по памяти её
и что дальше, она упадет
inqfen
У меня она выходила за 30 гб на тестинге
Anonymous
если ей не будет хватить памяи
yopp
по добавляю новых доках
Если у вас write only, то кэш где-то стабилизируется
yopp
Так зарежь по памяти её
Монгу нельзя зарезать по памяти
Anonymous
yopp
почему у меня не работает это
Сколько свободной памяти на хосте?
Anonymous
на хосте 1 гб озу, добавляются много доков по несколько кб
yopp
Это очень мало
inqfen
Кроме конфига монги в мире есть докер, ограничение памяти через systemd и много разных интересных вещей
inqfen
Поэтому да, сама она ограничиваться не умеет, но ей ограничить - можно
yopp
Поэтому да, сама она ограничиваться не умеет, но ей ограничить - можно
Если монге потребуется память не на кеш и она не сможет её выделить, вы получите ассерт и лежащую монгу
Anonymous
а во сколько упихаю?
yopp
Начните с 4
inqfen
и как в systemd поставить лимит памяти для сервиса?
Есть 2 варианта, resources limit и своя изоляция
inqfen
В 1гб вы монгу не упихаете
Ну в 1 понятно нет
Anonymous
Есть 2 варианта, resources limit и своя изоляция
вот человек пишет что это не поможет
inqfen
Можно в докер, с ограничением лимита в нем у меня стабильно живёт месяцами
yopp
Для такого объема памяти на хосте это всё бесполезно
inqfen
Потому что монга думает, что памяти столько, сколько лимит и не пытается коммитить
inqfen
А без него съелада все 32гб и приходил oom
Anonymous
какие есть альтернативы монге?
madspectator
Ребята, я может тупой или что :) Вы уже второй день обсуждаете, что монга жрёт память, но автор вопроса ни разу, насколька я помню, не показал, сколько именно монга у него выжрала памяти из этого гигабайта, и сколько жрут другие процессы на этом сервере.
yopp
какие есть альтернативы монге?
У вас эта проблема будет в любом хранилище. Разница только в том, что если у хранилища есть ручки, вместо падать, хранилище будет тормозить
Anonymous
когда заполниться
yopp
Нет смысла
yopp
Монга + память для ядра + системные сервисы и нет памяти
Anonymous
да в что за магия в этих базах. что там в озу храниться
yopp
Данные
yopp
Сервисные структуры
yopp
Буферы для обработки запросов
Anonymous
какие данные, мне просто добавить новые доки в базу
yopp
Попробуйте дать монге 4 гига и посмотрите что будет
critskiy
Попробуйте дать монге 4 гига и посмотрите что будет
Монга будет жрать все доступные лимиты, они же даже в документации упоминали в разделе production notes о пожирании озу, точнее емнип limiting ram
critskiy
https://docs.mongodb.com/manual/faq/diagnostics
critskiy
Чуть косвенный ответ на них
critskiy
Вопрос про RAM, ай мин, то, что вы говорили
yopp
Я не вижу рекомендаций
critskiy
Бле, я не про рекомендации, не про лимитирование
critskiy
=_=
yopp
Там нет ничего про ограничение потребления. Там есть про легитимное использование ручки с chacheSizeGB
yopp
То, зачем она предусмотрена вообще
critskiy
Must my working set size fit RAM?¶ No.
critskiy
Там и нет %)
critskiy
Я про ето именно %)
yopp
Если внимательно почитать что там дальше написано, там будет объяснение куда монге нужна память. Да, working set не обязательно должен помещаться в память, но кроме кеша для данных, монге нужна память и на другие структуры.
yopp
Сортировка в памяти на каждый курсор может требовать до 64мб
yopp
Агрегации до 128
Georgii
Привет! Нужна помощь! Могу ли я как-то обновить поле у каждого документа в коллекции по принципу: field: oldFieldValue + newFieldValue ? Кроме как пройтись по коллекции forEach и провести update каждого документа поочередно ничего не придумал 🤷‍♂️
Nick
А до 4.2 только с помощью forEach, верно?
До 4.2 если данные постоянно не меняются и допустим частичный даунтайм пр ложения, то можно сделать ту же агрегацию в новую коллекцию, потом старую удали ь и переименовать коллекцию - это будет быстрее чем вытаскивать доки, менять их и сохранять измененные
Anonymous
Добрый вечер, как бы вы смоделировали коллекцию под сдедующую задачу: - Есть публикации У каждой публикации есть количество лайков - Есть пользователь, уникальный идентификатор которого telegram_id. - Пользователь нажимает лайк на публикацию -> like++ Каким образом можно заимплементить проверку, что пользователь уже лайкал публикацию
Anonymous
Думаю для матерых, задача будет на минуту - две)
Aleksei
да хоть массив likes, где telegram_id и вставлять через addToSet
Anonymous
{ "post_id": 123, "likes": [12345, 53556, 383737] } Примерно таким образом?
Aleksei
да, как вариант. тут от задачи зависит, и как с этим работать