@MongoDBRussian

Страница 93 из 342
yopp
01.06.2017
13:14:58
если время синхронизации не критично, то нужно минимальную производительность, которой хватит на оплог + выборку

Dmitry
01.06.2017
13:15:38
Ну смотри, я начинаю экспорт, secondary начинает прогибаться под нагрузкой...запросы начнут идти на primary?

yopp
01.06.2017
13:15:56
если ты сделаешь readPrefrence: secondary — нет

Dmitry
01.06.2017
13:16:23
Ну тогда у меня просто зависает secondary и на этом все...

Google
yopp
01.06.2017
13:16:32
хм

небось запросы без maxTimeMs, да?

Dmitry
01.06.2017
13:16:53
Там вроде была опция другая по запросам, типа где меньше latency

небось запросы без maxTimeMs, да?
Ну у меня есть курсоры которые должны час висеть...

yopp
01.06.2017
13:17:25
у них таймаут в час установлен?

Dmitry
01.06.2017
13:17:29
Нет

yopp
01.06.2017
13:17:29
или в полтора?

Dmitry
01.06.2017
13:17:32
Я выключил вообще

yopp
01.06.2017
13:17:37
:)

вобщем твоя проблема не в монге, а в том как у вас устроен экспорт

Dmitry
01.06.2017
13:18:16
ну просто у нас был рост данных и я хз сколько экспорту нужно, сначала было 10 минут, потом стало 30, сейчас полтора часа

yopp
01.06.2017
13:18:37
ну вот надо смотреть почему полтора часа

60 гигабайт за полтора часа — очень долго

Google
Dmitry
01.06.2017
13:18:53
курсор висит потому что я итерирую по объектам, делаю запросы на внешние API и сохраняю результаты, поэтому между итерациями может пройти по 5 минут...

ну то есть вытянул документ 1, полез на другую систему, взял данные, посчитал, сохранил в базу, перешел к документу 2

yopp
01.06.2017
13:19:31
11.3777777778 мегабайт в секунду

ммм

я очень люблю эту цифру

Dmitry
01.06.2017
13:19:53
это что?

yopp
01.06.2017
13:20:05
это ~100мбит

которые очень часто говорят о том, что клиент где-то ударился головой в сетевой интерфейс :)

Dmitry
01.06.2017
13:21:00
ты к тому что я тупо сделал? :)

yopp
01.06.2017
13:21:10
нет, это я к тому, что возможно проблема не в io

точнее не в дисковом io, а в сетевом

Dmitry
01.06.2017
13:21:26
не ну EBS же по сети :)

сейчас у нас с4.xlarge

yopp
01.06.2017
13:21:45
не думаю что у ebs полоса 100 мегабит

короч, тебе надо сначала разобраться в проблеме, а не пытаться её решить с наскока

Dmitry
01.06.2017
13:22:16
750

на EBS

судя по документации

yopp
01.06.2017
13:22:48
для начала нужно убедиться что у тебя есть объективная картина происходящего на ноде

как на уровне ос, так и на уровне монги

Google
yopp
01.06.2017
13:23:19
я рекомендую prometheus + grafana

и туда https://github.com/y8/mongo_collection_exporter

с ноды собирать максимум метрик

там вроде клаудвотч экспортер есть

Dmitry
01.06.2017
13:24:48
ок, поработаю над этим

а для начала есть какие-то простые утилиты чтобы собрать это все?

ну типа atop/htop?

yopp
01.06.2017
13:25:24
толку от этого нет

нужно в динамике смотреть корреляции

в духе: в монге упали qps, в это же время полка после пика в сетевом io

Dmitry
01.06.2017
13:26:09
хм, ну статистика по EBS у меня есть в принципе с AWS

но это не ОС конечно

yopp
01.06.2017
13:26:30
нужно не только EBS, нужно видеть утилизацию основных ресурсов

Dmitry
01.06.2017
13:26:31
по монге ясно...что-то надо прикрутить

yopp
01.06.2017
13:26:55
CPU, RAM + RAM IO, DISK + DISK IO, NET + NET IO

Dmitry
01.06.2017
13:27:38
а есть что-нибудь готовое по мониторингу с docker-compose например?

yopp
01.06.2017
13:28:03
прометей и графана точно поднимаются из докера

Dmitry
01.06.2017
13:28:04
а хотя да, как же засунуть в докер если оно мониторит систему...

а, хм

yopp
01.06.2017
13:28:12
нормально засунуть

Google
Dmitry
01.06.2017
13:28:12
прикольно

yopp
01.06.2017
13:28:57
потому что для сборки метрик с хоста всегда есть --privileged или --device

а для выгребания метрик из контейнеров три ведра решений

Denis
01.06.2017
16:20:58
/me

Упс, тыкнулось случайно, извиняйте

George
01.06.2017
17:10:30
Как можно ускорить update_one? Работает намного медленнее, чем insert_many(ordered=False)

Всего около 100 итераций в секунду с обновлением

Понятно, что запись должна быть быстрее, чем перезапись, но почему так критично?

Однажды получилось ускорить этот процесс до 7000 итераций в секунду, но я не знаю что сделал тогда. Монга как-то разогрелась.

Dmitry
01.06.2017
17:31:12
а зачем отказываться от insert_many?

а, update_one лол

Denis
01.06.2017
17:31:59
Потому что обновление и вставка две разные операции)

Dmitry
01.06.2017
17:32:02
ну bulk_operations

там вроде копит по 1к операций и выполняет за раз

у меня upsert ы так работают

George
01.06.2017
17:32:59
Насколько я помню, у меня просто тогда было 1 итерация за 10 секунд

Как раз по 1000

Dmitry
01.06.2017
17:33:17
initialize_unordered_bulk_op

у тебя на чем код?

Google
George
01.06.2017
17:33:29
А вот unordered не делал вроде

Dmitry
01.06.2017
17:33:33
если питон то вот initialize_unordered_bulk_op

George
01.06.2017
17:33:33
У меня pymongo

Dmitry
01.06.2017
17:33:47
и туда пишешь что хочешь, хочешь апдейты, хочет что угодно

ну вот

как раз оттуда

у меня тоже )

http://api.mongodb.com/python/current/examples/bulk.html

George
01.06.2017
17:34:52
Но почему тогда он как-то сам мог разогнаться?) Я замечаю, что монга требует разогрева, первая операция всегда дольше последующих

Хотя занимает 50% озу для кэша

Dmitry
01.06.2017
17:35:15
к примеру bulk = db.test.initialize_unordered_bulk_op() bulk.find({'_id': 4}).upsert().update({'$inc': {'j': 1}}) потом после того как накопил сколько нужно операций >>> try: ... bulk.execute() ... except BulkWriteError as bwe: ... pprint(bwe.details)

Но почему тогда он как-то сам мог разогнаться?) Я замечаю, что монга требует разогрева, первая операция всегда дольше последующих
хз, я не делал особых замеров, по докам если хочешь ускорить кучу операций - делай unordered bulk operations :)

George
01.06.2017
17:36:17
Но insert_many на bulk работает

Dmitry
01.06.2017
17:36:23
по поводу скорости наверняка прогревается

но все-равно unordered bulk будет быстрее имхо

я так понял оно все кеширует в памяти, потом по 1к скармливает монге и та уже как-то параллельно пишет, сама разбирается как ей лучше

@dd_bb подскажи пожалуйста, а если у меня будет 2 secondary ноды, и я укажу приоритет на чтение с secondary - оно будет напрягать ноды равномерно?

yopp
01.06.2017
18:04:56
От клиента зависит

update конечно медленнее чем insert.

Для update сначала find надо сделать

George
01.06.2017
18:16:11
Ну да, кстати, индексы же ускорят этот процесс

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