Anonymous
она не упадет?
yopp
Монга вероятнее всего крешнется
yopp
Если вам не хватает памяти, единственный вариант добавить памяти
Anonymous
так а куда она девается
yopp
Монге меньше чем полгига в принципе не хватит
yopp
Возьмите managed монгу в Атласе или в Яндекс.Облаке
Anonymous
у меня гиг
Anonymous
так в чем проблема я не понимаю
Anonymous
сначала памяти хватает, через 2 дня крашится
Anonymous
может альтернативы использовать?
Anonymous
но панять все равно хочу как это работает, чем память заполняется, почему не сбрасывается на хард
Egor
скинь лог с команды db.stats() даже интересно стало)
Anonymous
скинь лог с команды db.stats() даже интересно стало)
... "db" : "test", ... "collections" : 0, ... "views" : 0, ... "objects" : 0, ... "avgObjSize" : 0, ... "dataSize" : 0, ... "storageSize" : 0, ... "numExtents" : 0, ... "indexes" : 0, ... "indexSize" : 0, ... "fileSize" : 0, ... "fsUsedSize" : 0, ... "fsTotalSize" : 0, ... "ok" : 1
Anonymous
ой
Anonymous
соре
Egor
ну база пустая, в чем проблемы
Anonymous
щас
Anonymous
ну база пустая, в чем проблемы
> show dbs admin 0.000GB config 0.000GB local 0.000GB sports 0.295GB > use sports switched to db sports > > db.stats() 2020-01-18T01:37:31.548+0300 E QUERY [thread1] SyntaxError: expected expression, got '>' @(shell):1:0 > { ... "db" : "test", ... "collections" : 0, ... "views" : 0, ... "objects" : 0, ... "avgObjSize" : 0, ... "dataSize" : 0, ... "storageSize" : 0, ... "numExtents" : 0, ... "indexes" : 0, ... "indexSize" : 0, ... "fileSize" : 0, ... "fsUsedSize" : 0, ... "fsTotalSize" : 0, ... "ok" : 1 ... } 2020-01-18T01:37:31.552+0300 E QUERY [thread1] SyntaxError: missing ; before statement @(shell):2:13 >
Anonymous
что не так 🤔
Anonymous
почему база test, если я выбрал sports?
Anonymous
реально что с ним
Egor
ну ребутни клиент , хз и убери >
Anonymous
ну ребутни клиент , хз и убери >
ребунтнул вот так: > db.stats() { "db" : "sports", "collections" : 1, "views" : 0, "objects" : 214, "avgObjSize" : 6558934.719626168, "dataSize" : 1403612030, "storageSize" : 317194240, "numExtents" : 0, "indexes" : 1, "indexSize" : 36864, "fsUsedSize" : 2815176704, "fsTotalSize" : 31158845440, "ok" : 1 }
Anonymous
ну вот после ребута озу не жрет почти, так в чем проблема?
Egor
попробуй доки в коллекцию повставлять и потом статистику по ней сделать db.getCollection('your_collection').stats()
madspectator
Так это не проблема, mongodb так работает, кэширует в памяти те куски коллекций, к которым она обратилась.
madspectator
Ну, на мой взгляд mongodb не должна выжрать больше cacheSizeGb, у меня столько она примерно выжирает на серверах
madspectator
Ну т.е. есть ещё непосредственно кэширование файлов, лежащих в /var/lib/mongodb, но эти данные должны выгружатьс из памяти, если какому-то другому процессу требуется ОЗУ.
Egor
https://pastebin.com/TRAgV18V
это после новых вставок?
Anonymous
повставлять?
Egor
еще с новыми сделай плиз
Egor
да, доков 15
madspectator
так они больше не нужны после записи. это можно как-то изменить?
Вы говорите, что у вас кто-то что-то убивает, но не показываете расклад по памяти, какие процессы сколько выжрали. Может быть, например, у вас другой процесс протекает, а потом ОС убивает монгу, потому что ей не повезло попросить память (которая ей ещё полагалась по cacheSizeGb), которой уже нет.
Anonymous
да, доков 15
https://pastebin.com/zLm1ss24
Egor
сразу вырос размер кеша
Egor
с 0.2 метров до 147
Anonymous
сразу вырос размер кеша
осталось выяснить почему
Anonymous
у меня гиг озу
madspectator
И что?
Egor
на cachesize 300 магабайт выделено
с флагом wiredTigerCacheSizeGB ?
Anonymous
о нет
Egor
с флагом wiredTigerCacheSizeGB ?
попробуй с этим флагом
Anonymous
попробуй с этим флагом
поменять cacheSizeGB на wiredTigerCacheSizeGB?
Egor
в mongod.conf
Egor
или при запуске mongod --wiredTigerCacheSizeGB 0.6
Anonymous
или при запуске mongod --wiredTigerCacheSizeGB 0.6
значительно меньше памяти съело, попробую с таким параметром использовать. если что напишу, спасибо.
Egor
👌
Anonymous
хм, а в чем отличие? пока читаю не могу разобраться
Egor
отличие чего от чего
Anonymous
отличие чего от чего
моего параметра в конфиге от вашего
Egor
а как ваш конфиг выглядит примерно с вашим старым и новым параметром?
Anonymous
а как ваш конфиг выглядит примерно с вашим старым и новым параметром?
storage: dbPath: /var/lib/mongodb journal: enabled: true wiredTiger: engineConfig: cacheSizeGB: 0.3
Egor
вроде правильно
Anonymous
это тоже самое?
Egor
а вот журнал можно выключить
Egor
Egor
еще так можно storage: dbPath: /var/lib/mongodb/data wiredTiger: engineConfig: configString: cache_size=400M
Anonymous
так это тоже самое все
Anonymous
проблему не решает(
Anonymous
разве что перезагружать базу время от времени
Anonymous
поставить скрипт какой-нибудь, который ставит на паузу запись и перезагружает mongodb
Anonymous
какое-то извращенство..
Egor
попробуй еще сменить storage engine на MMAPv1 (нужно юзать старую версию монги) хз мб поможет либо мб другую бд потыкать (CouchDB к примеру, она намного меньше памяти хавает, либо смотреть только embedded nosql databases, к примеру TingoDB - у нее клиентский апи похожий на монговский)
yopp
cacheSizeGB исключительно регулирует только размер кэша wiredtiger. но кэш это только один тип данных хранящихся в памяти. Всё остальное никак не регулируется: буферы для курсоров, для сортировок, агрегаций, подключений, client view, размер снепшотов и ещё десятки других вещей которые требуют памяти
yopp
Если у вас не хватает памяти под данные, то есть всего два пути: уменьшить размер данных или увеличить объём памяти.
yopp
В других хранилищах могут быть ручки которые частично позволят решить эту проблему ценой latency
yopp
Но фундаментально проблема никуда не денется
Anonymous
Если у вас не хватает памяти под данные, то есть всего два пути: уменьшить размер данных или увеличить объём памяти.
большем объем в базе данных = большой объем озу? а если я хочу хранить миллионы объектов/ терабайты данных мне нужно машина с десятками гб озу? как люди с этим справляются?
yopp
Так и справляются :)
yopp
Много данных хранить всё ещё дорого и очень сложно