@MongoDBRussian

Страница 314 из 342
Bo0m4ik
26.09.2018
14:53:20
mongos

yopp
26.09.2018
14:54:04
это не балансер, это роутер. но всё сложнее. шардирование требует специального реплика сета для хранения карты данных и конфигурации и mongos

Bo0m4ik
26.09.2018
14:54:19
наверное надо опять почитать

спасибо!

Google
yopp
26.09.2018
14:54:25
и одного и более реплика сета

каждый реплика сет будет хранить кусок данных

Bo0m4ik
26.09.2018
14:55:01
а мастер так же один останется?

yopp
26.09.2018
14:55:13
в каждой реплике будет свой праймари

Bo0m4ik
26.09.2018
14:57:37
AstraSerg
26.09.2018
15:01:41
12 не оптимально. Большие потери на заись. РЕкомендуется 3 максимум 5
вот здесь "зашитые" ограничения: A replica set can have up to 50 members but only 7 voting members. Но, видимо, @b0om4ik нужна не реплика, а шардинг.

invzbl3
26.09.2018
16:38:45
ребят, объясните мне, пожалуйста, что делать, если у меня в процессе вставки методом insertOne() в строчке Document found = database.getCollection("collection").find().first(); вылетает ошибка https://ghostbin.com/paste/rx9rs?

я посмотрел решение с учетом ошибки com.mongodb.MongoSocketReadException: Prematurely reached end of stream здесь https://stackoverflow.com/questions/42150578/mongodb-com-mongodb-mongosocketreadexception-prematurely-reached-end-of-strea, но как решить проблему у себя не пойму



если у меня подключение к кластеру вообще

ребят, объясните мне, пожалуйста, что делать, если у меня в процессе вставки методом insertOne() в строчке Document found = database.getCollection("collection").find().first(); вылетает ошибка https://ghostbin.com/paste/rx9rs?
интересно то, что у меня в бд 36 документов и из них 23 успешно вставляется постоянно, а на 24м стабильно вылетает ошибка

AstraSerg
26.09.2018
16:48:20
Извините, не в курсе. Джавайские стактрейсы повергают в уныние :)

Ivan
27.09.2018
08:46:49
Привет! Что ведёт к росту файлов журнала? Монга в реплике, не мастер.

Google
Ivan
27.09.2018
08:49:58
и есть ли какие-то рекомендации к размеру раздела под journal? Может быть в % от базы? Я не нашёл

Kolya
27.09.2018
09:08:54
Ребят, а кто подскажет, если у меня в БД лежит строка и в ней число, и я сделаю поиск с $gte, монга приведет типы и сравнит как число?

Kolya
27.09.2018
09:11:06
нет
Понял, спасибо

Nick
27.09.2018
09:14:23
но если вы знаете все варианты типов, то можете использовать$or например вот так db.getCollection('t1').find({ $or:[ {ddd:"-1"}, {ddd:-1} ] })

Алексей
27.09.2018
09:34:14
При запросе через aggregation теряется курсор. Ошибка "cursor not found". У реплика сета настройка SecondaryPreferred . Если поставить Primary, то все ок. Подскажие пожалуйста что за фигня?

Алексей
27.09.2018
10:51:09
Если шлётся 20-30 aggregation запросов в секунду достаточно жирных с lookup, group, sort, cond. Это может стать причиной того что монга съедает всю доступную оперативную память? Я понимаю что очень общий вопрос без конкретики, но все-таки.

Или можно по другому сформулировать. aggregation запросы требовательны к памяти?

yopp
27.09.2018
10:53:24
ту часть, которую монга использует для кешированния данных вы можете подкрутить, если у вас wt

другую часть не можете

но и смысла нет

Алексей
27.09.2018
10:54:38
монга будет стараться всю память задействовать
Так ладно если бы просто использовала. Так она съедает всю память и крашит.

yopp
27.09.2018
10:54:57
вот видите, формулировака проблемы уже изменилась :)

отключите oom для монги

если кроме монги на этой ноде есть другие сервисы, их лучше вынести куда-то ещё. или монгу подвинуть на ноду, где ей не надо бороться за память

Google
yopp
27.09.2018
10:56:18
если такой возможности нет, попробуйте на 1/4 уменьшить размер кеша для WT

но это уже может иметь последствия в виде увеличения latency у запросов

Ivan
27.09.2018
10:57:25
Алексей
27.09.2018
10:57:26
Тем более там данных-то мало. Но съедает 8гб . db.stats() { "collections" : 8, "views" : 0, "objects" : 6214295, "avgObjSize" : 187.630542804936, "dataSize" : 1165991544.0, "storageSize" : 664494080.0, "numExtents" : 0, "indexes" : 20, "indexSize" : 348192768.0, "fsUsedSize" : 25555324928.0, "fsTotalSize" : 210999894016.0, "ok" : 1.0 }

Serhio
27.09.2018
10:57:30
yopp а чем плох вариант ограничить размер памяти отдельной ручкой?

yopp
27.09.2018
10:57:39
потом эта ручка ограничивает кеш wt

я не уверен что память для сортировок и прочего туда входит

Алексей
27.09.2018
10:58:59
отключите oom для монги
А это нормальная практика? Мне админы говорили что лучше так не делать. На ноде кроме монги важных сервисов нет.

Serhio
27.09.2018
10:59:41
А это нормальная практика? Мне админы говорили что лучше так не делать. На ноде кроме монги важных сервисов нет.
с админской точки зрения и говорю) лучше не отключать. Я использовал --wiredTigerCacheSizeGB + ограничение памяти в контейнере

yopp
27.09.2018
11:00:35
30 агрегаций в секунду по 128 мегабайт, это уже близко к 4 гб

Алексей
27.09.2018
11:02:13
Вообще раньше все ок было. Монга жила спокойно на 4гб. Потом было обновление нашей API в который часть запросов были переведены на aggregation. И началось. Видимо зря это было сделано (

yopp
27.09.2018
11:02:30
добавьте памяти, делов то

Serhio
27.09.2018
11:02:57
yopp
27.09.2018
11:03:33
хороший индеец -мертвый индеец =)
индеец может умереть вместе с каким-то важными данными :)

Алексей
27.09.2018
11:03:40
скорее не "зря", а безлаберно
В смысле криво было реализовано? Возможно.

Google
AstraSerg
27.09.2018
11:04:22
В смысле криво было реализовано? Возможно.
да, непродуманные запросы. Посмотрите в сторону оптимизации, может переделать какие индексы UPD могу конечно ошибаться, но раз такие симптомы, не плохо бв проверить, explain-ы погонять

Serhio
27.09.2018
11:05:54
индеец может умереть вместе с каким-то важными данными :)
я про то же ) поэтому паковал в докер-контейнер и ограничивал ему память + кеш WT в два раза меньший чем у контейнера, полёт нормальный, при тормозах добавить памяти. OOM не шелохнётся ниразу

AstraSerg
27.09.2018
11:06:01
этот вывод на основании чего сделан-то?
Согласен, смелый вывод, поправился

Алексей
27.09.2018
11:10:07
скорее всего добавить памяти самый дешевый и простой выход в вашей ситуации
Это можно конечно. Но просто при размере базы чуть больше 1гб съедать 8гб оперативы чет как-то не очень перспектива. К тому же мне нужно именно проблему решить, а не просто сделать так чтоб сейчас по быстрому работало. Я думаю все таки переписать с aggregation на обычные запросы и затестить.

yopp
27.09.2018
11:10:31
это вполне реальная перспектива

Алексей
27.09.2018
11:11:10
Спасибо за ответы)

yopp
27.09.2018
11:11:13
переписать обратно это десятки человекочасов, лишние 8 или 16 гигабайт памяти того совершенно не стоят

использование памяти субд это не проблема

если у вас много трансформаций в AF, это нормально

монге нужен буффер для трансформированных документов

если вы хотите быстро что-то решить, то как уже сказали — ограничьте размер кеша WT. По-умолчанию это половина памяти. Вручную выставьте лимит в 3/8 например

Алексей
27.09.2018
11:15:21
Хорошо. Я понял.

Andrey
27.09.2018
12:10:41
Добрый день. Есть реплика сет из 3х нод и 2х арбитров. Упала одна реплика. Хочу запустить полную репликацию. Но опыта работы с репликами почти нет. Я правильно понял, что я должен вычистить содержимое директории с базами, стартануть ноду. После чего, запустится копирование на эту реплику, а затем долгий процесс индексации?

Maxim
27.09.2018
14:22:21
привет! первый раз создаю кластер на монгодб кластере - подскажите какую версию монги лучше выбрать 3.6 или 4 ? На что это влияет (цена/стабильность?)?

yopp
27.09.2018
14:26:12
4

Google
Maxim
27.09.2018
14:28:41
4
спасибо!

yopp
27.09.2018
14:55:18
¯\_(ツ)_/¯

возможно сокеты

может быть они у вас там текут, и в после N запроса тупо нехватает дескрипторов или что-то в этом духе.

invzbl3
27.09.2018
14:56:00
у меня на одном и том же месте при вставке вылетает это исключение

yopp
27.09.2018
14:56:12
да, именно по этому

Nick
27.09.2018
14:56:55
и кстати как насчет обновить драйвер?

invzbl3
27.09.2018
15:01:49
а если руками вставлять а не из кода?
руками вставить можно, но тут именно в коде ошибка

не самый старый вроде бы

Nick
27.09.2018
15:03:02
ну да

yopp
27.09.2018
15:03:21
моё предположение что из-за database.getCollection("collection") у вас текут сокеты

invzbl3
27.09.2018
15:03:41
yopp
27.09.2018
15:03:59
почитать внимательно документацию к драйверу

Nick
27.09.2018
15:04:17
кстати как вариант, просто вынесите database.getCollection("collection") в переменную

Страница 314 из 342