Nick
я все знаю
yopp
балансировка == не нужна
Nick
я ж говорю что долго
Nick
мне нужно разметить тыщу чанков хотя бы
yopp
и ещё раз
yopp
move _не нужен_
yopp
он нужен только для первых N чанков
yopp
дальше чанки уже на нужном шарде делить
yopp
чтоб избежать вообще балансировки
Nick
мув не нужен в моем случае только для четверти
Nick
4 ноды
Nick
для равномерности раскидал на 1000 чанков примерно
Nick
эти 100 чанков раскидываю по 4 нодам
yopp
ну вот теперь делаем
1) MinKey … 1/4, 1/4 .. 2/4, 2/4 … 3/4, 3/4 … MaxKey
yopp
2) Move MinKey … 1/4 => sh1, 1/4 .. 2/4 => sh2, , 2/4 … 3/4 => sh3, 3/4 … MaxKey => sh4
Nick
будет дикий перекос по нагрузке
yopp
3) и на sh1 делим чанк хоть на миллиард
yopp
задача начала на лету меняться :))))
yopp
т.е. надо не pre-split сделать
yopp
давай как обычно: начнём с проблемы
Nick
пробелма в том, что в 3.6 добавили охеренную опцию, которая дико тормозит процесс, и видимо еще чтото, т.к. moveChunk нулевого размера занимает не меньше полсекунды
yopp
нет, это не проблема
Nick
полсекунды это уже после выставленной опции в ноль
yopp
чо ты вообще делаешь?
yopp
и зачем?
Nick
хороший вопрос
yopp
с него и надо начинать
Nick
корень пробелмы прост диски обычные хдд и монга почемуто не успевает балансить данные. чанки размером в полгига мигрируют пару часов
Nick
в чанке +-200к доков
yopp
replication lag большой? delayed реплики есть?
yopp
т.е. ты хочешь за монгу поделить существущие чанки на куски и растащить их по шардам?
Nick
лага нет, нагрузка на диски в районе 10%, реплики полные дубли
Nick
yopp
ты говоришь монга не успевает балансировать чанки, но при этом нагрузка на диски низкая
yopp
не успевает почему?
yopp
и какая монга?
yopp
Nick
кстати про 10% я наверн нагнал, это нужно отльно проверить, по графикам просто ест ькуда расти, да и iowait не превышает процентов 20
монга 4.0.6, онбволяли на прошлой неделе как раз расчитывая, на то что будет поулчше
а вот почему не успевает особо не известно, в логах балансер пишет количество клонирваонных доков и просто наблюдая за счетчиком станвоится так печально что хочется все это самому сделать
yopp
а куда не успевает-то?
Nick
серваки точно такие же, сеть минимум гигабит
Nick
в пределах цода
yopp
Nick
не понял вопроса? не успевает балансить чанки между нодами шардов
yopp
успевание или не успевание означает что что-то укладывается в какие-то рамки
yopp
в какие рамки не укладывается балансировка?
Nick
в моем случае данные прибывают быстрее на одну ноду, чем успевает с нее раскидываться
yopp
т.е. возник перманентный перекос?
yopp
большой?
yopp
влияет на производительность?
Nick
на производительность не влияет, влияет на то что через месяц место кончится)
yopp
так, начинаем подбираться к реальной проблеме )))
yopp
запросы на секондарях делаете?
Nick
Нет
yopp
тогда можно попробовать поставить очень низкое значение orphanCleanupDelaySecs
yopp
и посмотреть что будет
yopp
а мув пустого чанка раньше занимал до десяти секунд, так что полсекунды это жочень жорошо
Nick
Выставил в ноль, собственно поэтому пресплит сделался для новой коллекции. Посмотреть как будет стандартный балансер с этим жить можно конечно попробовать, но чтото не думмю что с высоты пары часов будет както заметно изменение с 15 минут
Nick
Сейчас на 60 секундах, над будет запустить балансер поеаблюдать
yopp
orphanCleanupDelaySecs нужен чтоб чтения на secondary которые начались до миграции до конца своего выполнения видели чанк
yopp
потому что праймари в шарде ничо не знает про то что происходит на секондарях
yopp
если чтений с секондарей нет, то orphanCleanupDelaySecs можно поставить низехонько.
yopp
Before deleting the chunk during chunk migration, MongoDB waits for orphanCleanupDelaySecs or for in-progress queries involving the chunk to complete on the shard primary, whichever is longer.
However, because the shard primary has no knowledge of in-progress queries run on the shard secondaries, queries that use the chunk but are run on secondaries may see documents disappear if these queries take longer than the time to complete the shard primary queries and the orphanCleanupDelaySecs.
yopp
т.е. проблема судя по всему в «waits for orphanCleanupDelaySecs OR for in-progress queries involving the chunk to complete on the shard primary, whichever is longer.»
yopp
судя по всему orphanCleanupDelaySecs is longer ;)
Nick
Ну да оно же 15 минут по дефолту
yopp
вообще moveChunk же не _waitsForDelete
yopp
по сему moveChunk должен быстрее работать
yopp
вообще такое поведение своейственно ситуациям когда чанк долго читают
yopp
есть ли у вас жирные долгие запросы, которые например ещё и броадкастом что-то тянут?
Nick
Ото всего избавился, остались запросы по одному спарсед индексу и по идшникам
Nick
Конечно то что индексы по ид уже в память не влазят наверняка аффектит, но горячий набор данных достаточно мал
Nick
Да вынеся все в одельную коллекцию на время и полностью убрав запросы именно к этой коллекции ничего не поменяло
yopp
вопрос не избавились или нет, а есть ли продолжительные по времени запросы
yopp
хм
yopp
интересно
yopp
а размер чанка дефолтный?
Nick
1гб
Nick
Как раз при перелеливке использую более гранулированный ключ
Nick
На один ключ часто бывает 250к доков по 1.5 кб
yopp
интересненько