Slava
я не верно выразился - монга одна на машине или еще есть другие приложения/сервисы/докеры?)
Игорь
есть, там еще веб-сервер крутиться и скрипты бизнес-логики
Slava
правильнее, но дороже вынести монгу на отдельную машину, а так как временное решение можно процесс mongod добавить в исключение oom killer'a и/или задать остальным процессам limit по памяти
Игорь
Я не так давно спрашивал в треде, что монго очень разростаеться в памяти и много из данных, что туда загружены, по факту можно было бы слить на диск, потому, что они уже не будут использоваться на этом сервере и нужны для аналитики. Сейчас, после рестарта, она занимает порядка 16 гб. До этого разрослась до 50 гб оперативы. То есть, в итоге, я думал, что монго будет отдавать системе часть памяти, когда будет запрос на выделение и оом киллер ее не грохнет
Игорь
swap на сервере сейчас 8гб, увеличение его могло бы как-то повлиять на ситуацию?
Nick
swap на сервере сейчас 8гб, увеличение его могло бы как-то повлиять на ситуацию?
свап только сделает хуже, нет ничего хуже чем пару гигов памяти бд в свопе. отключайте его на машинах где памяти больше 8гб
I
свап только сделает хуже, нет ничего хуже чем пару гигов памяти бд в свопе. отключайте его на машинах где памяти больше 8гб
я просто напомню, что, например, оракл 12с не ставится на сервер без свапа, prerequest такой
Nick
значит не судьба мне пользоваться ораклом
Nick
ну вы то наверняка только оракл пускаете на тачке
I
ну он, кстати большую часть памяти занимает в /dev/shmem
Nick
а не стопицот кешов и приложух
Игорь
А вообще, допустим, если монго одна на сервере и размер ее в памяти достиг лимита физической памяти, монго тоже грохнется? Или все таки есть механизм очищения данных и выгрузка их на жесткий диск?
Nick
А вообще, допустим, если монго одна на сервере и размер ее в памяти достиг лимита физической памяти, монго тоже грохнется? Или все таки есть механизм очищения данных и выгрузка их на жесткий диск?
монга умная и сама скидывает даныне которые не нужны на диск. если ей одномоментно для выполнения запроса нужно держать в памяти больше данных чем есть памяти, то никак вы не скажете ей выгрузи часть а потом вытащи их оттуда
I
кеш сайз лимит же можно задать
Игорь
MongoDB server version: 3.6.4 WiredTiger
Nick
кеш сайз лимит же можно задать
кеш да, а лимитировать то скока она реально памяти выделит себе на обработку - нет
Юрий
Здравствуйте, удалил по половине полей в документах, и решил проверить как работает repair - в итоге место занимаемое коллекцией осталось такое же, а вот индексы (в мб. на диске) уменьшились почти в двое. Как так???
Nick
Rebuilds the database and indexes by discarding invalid or corrupt data
Nick
вполне себе индексы при перестроении стали компактнее
Nick
и тут вопрсо как вы смотрите размер индексов и размер данных
Юрий
В данном случае просто - занимаемое место на диске, значит ли это что после введения большого объема документов, неплохо бы сделать это ещё раз для экономия места на диске и главное в памяти?
Nick
насколько помню монга не возвращает место испод коллекций
Nick
посмотрите на compact команду
Юрий
Попробую спасибо)
Юрий
И это что у меня было 40% поврежденных данных, или как??? Или индексы после перестроения просто уменьшаются?
Nick
просто репайир не компактит данные, но перестраивает индексы
Nick
поэтому индексы уменьшились
Юрий
Спасибо
Veaceslav
Добрый день. Господа а можно как-то заставить монго (mongoose) отдать и поле createdAt которая автоматом генерится ?
Veaceslav
Все, достал его из id.
madspectator
Подскажите, пожалуйста. Разбираюсь с настройкой replica set. Во всех tutorial рекомендуют сделать journal.enabled=false, preallocDataFiles=false, но это имеетт смысл только для mmap движка. В 4-ой монге mmap storage уже deprecated. То есть для арбитра надо тоже юзать wiredtiger?
yopp
но вообще выключать журнал это очень плохая идея
yopp
вы читаете некорректные туториалы, читайте официальные: https://docs.mongodb.com/manual/administration/replica-set-deployment/
yopp
Я не так давно спрашивал в треде, что монго очень разростаеться в памяти и много из данных, что туда загружены, по факту можно было бы слить на диск, потому, что они уже не будут использоваться на этом сервере и нужны для аналитики. Сейчас, после рестарта, она занимает порядка 16 гб. До этого разрослась до 50 гб оперативы. То есть, в итоге, я думал, что монго будет отдавать системе часть памяти, когда будет запрос на выделение и оом киллер ее не грохнет
Потому что это её нормальное поведение: использовать память по максимуму. Я вам ещё в прошлый раз ответил — ручек для управления кешем у вас нет. Единственное что вы можете сделать — ограничить размер кеша, но это не гарантирует что монга не выделит больше памяти, под другие задачи, кроме кеша (например сортировки или агрегации)
yopp
Деплоить базы данных вместе с приложением — порочная практика
yopp
Но для вашего случая, вероятно, ограничения размера кеша будет достаточно
yopp
Если у вас там не сотни подключений с тяжелыми запросами, монга будет ну может быть 150% от этого размера потреблять
yopp
Но память ОС она отдавать не будет ни при каких условиях. В целом базы данных редко отдают памят назад, потому что почти гарантированно ей эта память снова сразу понадобится
yopp
так как это copy-on-write хранилище, то при обновлении сохраняется новая копия вашего документа, а страницы которые занимала старая версия, после того как старую версию перестали использовать, помещают в пул свободных страниц
yopp
индексы могли уменьшится из-за того, что вы их по сути пересоздали, что привело к упорядочиванию индекса и вероятнее всего это эффект от prefix compression
yopp
repair не нужно использовать после удаления данных, его нужно использовать после нештатного завершения процесса монги. для того чтоб wt отдал пустые страницы назад файловой системе есть compact
yopp
но опять-же, в compact смысла так-же мало, как и во возращении пямяти. в коллекцию скорее всего добавятся данные и wt снова будет запрашивать у фс место. compact имеет смысл когда вы удаляете большие объёмы и этот объём не будет ничем заменён.
yopp
Stable: 4.0.5 (Dec 20, 2018) Bugfix: 3.6.10 (Jan 22, 2019), Legacy: 3.4.18 (Nov 7, 2018) Код запросов -> https://play.db-ai.co 4.0.5: https://docs.mongodb.com/manual/release-notes/4.0/#dec-20-2018 3.6.10: https://docs.mongodb.com/manual/release-notes/3.6/#jan-22-2019 3.4.18: https://docs.mongodb.com/manual/release-notes/3.4/#nov-7-2018 End of life: 3.4 (EOL: June 2019), 3.2.21 (REL: Sep 2018 / EOL: Sep 2018), 3.0.15 (REL: May 2015 / EOL: Feb 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf
Co(n)stantine👨‍🔬
Hooray!
madspectator
Хочу поднять secondary ноду исключительно для бэкапа на случай физической утраты production сервера. Внезапно оказалось, что под индексы нужна память и её не хватает на той vps, что я взял под secondary. Я ведь могу отключить построение индексов на backup secondary? Эта мысль имеет смысл?
madspectator
Ну вроде дока монги грит, что это как раз мой случай.
madspectator
Ну да, оперативная.
Nick
и скока ж у вас там на впске, 512?
madspectator
4gb
madspectator
Индексы 5гб весят
Nick
ну так они легко себе кладутся на диски
Nick
ищите пробелмы в другом месте
madspectator
В общем суть в том, что я поднял secondary,он стал делать синхронизацию с primary и помер
madspectator
2019-01-24T16:21:55.487+0000 F - [repl writer worker 15] out of memory.
madspectator
Да я кажется понял уже, у меня cacheSizeGb неправильно прописан был, щас поставил 2gb
madspectator
А было 10, при том что памяти всего 4.
yopp
а зачем вы его вручную установили?
yopp
надо баннер сделать: leave cacheSizeGb alone
yopp
половина вопросов в этом чяте в этом году про кеш
madspectator
Просто скопировал конфиг с primary, а там у меня ещё куча всего помимо монги,вот и стояло ограничение
Max
Привет, кто-то может подсказать что делает пропертя batchSize в агрегации?
yopp
с 3.6 это свойство курсора, задающее количество документов возвращаемых в одном ответе
yopp
https://docs.mongodb.com/manual/reference/method/cursor.batchSize/#cursor.batchSize
yopp
это не пользовательское свойство, это штука для драйверов
yopp
не отправилось её имеет смысл крутить если стандартной тысячи документов мало и вы уперлись в сетевые задержки
yopp
так бывает когда документы очень маленькие, например десятки байт, а из запроса их выпдает очень много, так что оверхед монго-протокола становится заметным. т.е. вы экономите один раундтрип на getMore + размер заголовоков
Veaceslav
Всем добрый день. Ребят знаю что есть такая штука, которая позволит указать какие значения может принимать поле при попытке туда что-то записать. Вот только я забыл как оно назваеться, можете напомнить плиз ?
Veaceslav
Привер: product_status: used, new
Veaceslav
Надеюсь вы понимаите о чем я
Veaceslav
все есть. Это был enum. всем спасибо
Bro
о
Bro
я не знал что такое есть