yopp
у тебя любая выбока в которой не известен точно шард-ключ будет броадкастится на весь кластер
Dmitry
Угу
yopp
и это убивает весь смысл шардинга
Dmitry
И это сильно будет медленно по сравнению с одной нодой?
yopp
это работает для всяких приблуд типа gridfs и прочих
yopp
И это сильно будет медленно по сравнению с одной нодой?
я не знаю что такое «медленно» или «быстро» :)
Dmitry
Ок. Запросы будут быстрее или медленнее выполнятся при использовании hashed и __id чем если бы они работали на одной ноде?
Dmitry
И на сколько быстрее/медленнее? Хотя бы примерно на глаз :)
yopp
потому что правильный вопрос: для данных X, испольуемых через выборки Z и Y, как изменится производительность при изменении топологии с Foo на Bar
Dmitry
Dmitry
Я тут думал за часик все поменяю и буду на коне. А тут такие философские вопросы :)
Dmitry
Кстати купили iops
Dmitry
1000
Dmitry
Мало:)
Dmitry
По цене как ещё один сервак :)
yopp
это от того что почти все думают про данные самым неэффективным образом
Dmitry
В общем ты считаешь что лучше реплика с чтением с secondary?
Dmitry
В принципе если использовать ephemeral...
Dmitry
Возникает вопрос насколько это хреново если бутнуть потом этот сервер
yopp
если исходить из того как ты сформулировал свою проблему (отказы в обслуживании при переодическом экспорте данных), то да
Dmitry
Насколько быстро реплика поднимется...
yopp
тебе нужна скорее всего hidden реплика, с которой ты будешь делать дампы/выборки в целевую систему
yopp
если время синхронизации не критично, то нужно минимальную производительность, которой хватит на оплог + выборку
Dmitry
Ну смотри, я начинаю экспорт, secondary начинает прогибаться под нагрузкой...запросы начнут идти на primary?
yopp
если ты сделаешь readPrefrence: secondary — нет
Dmitry
Ну тогда у меня просто зависает secondary и на этом все...
yopp
хм
yopp
небось запросы без maxTimeMs, да?
Dmitry
Там вроде была опция другая по запросам, типа где меньше latency
Dmitry
небось запросы без maxTimeMs, да?
Ну у меня есть курсоры которые должны час висеть...
yopp
у них таймаут в час установлен?
Dmitry
Нет
yopp
или в полтора?
Dmitry
Я выключил вообще
yopp
:)
yopp
вобщем твоя проблема не в монге, а в том как у вас устроен экспорт
Dmitry
ну просто у нас был рост данных и я хз сколько экспорту нужно, сначала было 10 минут, потом стало 30, сейчас полтора часа
yopp
ну вот надо смотреть почему полтора часа
yopp
60 гигабайт за полтора часа — очень долго
Dmitry
курсор висит потому что я итерирую по объектам, делаю запросы на внешние API и сохраняю результаты, поэтому между итерациями может пройти по 5 минут...
Dmitry
ну то есть вытянул документ 1, полез на другую систему, взял данные, посчитал, сохранил в базу, перешел к документу 2
yopp
11.3777777778 мегабайт в секунду
yopp
ммм
yopp
я очень люблю эту цифру
Dmitry
это что?
yopp
это ~100мбит
yopp
которые очень часто говорят о том, что клиент где-то ударился головой в сетевой интерфейс :)
Dmitry
ты к тому что я тупо сделал? :)
yopp
нет, это я к тому, что возможно проблема не в io
yopp
точнее не в дисковом io, а в сетевом
Dmitry
не ну EBS же по сети :)
Dmitry
сейчас у нас с4.xlarge
yopp
не думаю что у ebs полоса 100 мегабит
yopp
короч, тебе надо сначала разобраться в проблеме, а не пытаться её решить с наскока
Dmitry
750
Dmitry
на EBS
Dmitry
судя по документации
yopp
для начала нужно убедиться что у тебя есть объективная картина происходящего на ноде
yopp
как на уровне ос, так и на уровне монги
yopp
я рекомендую prometheus + grafana
yopp
и туда https://github.com/y8/mongo_collection_exporter
yopp
с ноды собирать максимум метрик
yopp
там вроде клаудвотч экспортер есть
Dmitry
ок, поработаю над этим
Dmitry
а для начала есть какие-то простые утилиты чтобы собрать это все?
Dmitry
ну типа atop/htop?
yopp
толку от этого нет
yopp
нужно в динамике смотреть корреляции
yopp
в духе: в монге упали qps, в это же время полка после пика в сетевом io
Dmitry
хм, ну статистика по EBS у меня есть в принципе с AWS
Dmitry
но это не ОС конечно
yopp
нужно не только EBS, нужно видеть утилизацию основных ресурсов
Dmitry
по монге ясно...что-то надо прикрутить
yopp
CPU, RAM + RAM IO, DISK + DISK IO, NET + NET IO
Dmitry
а есть что-нибудь готовое по мониторингу с docker-compose например?
yopp
прометей и графана точно поднимаются из докера
Dmitry
а хотя да, как же засунуть в докер если оно мониторит систему...
Dmitry
а, хм
yopp
нормально засунуть