yopp
Попробуйте не bulk, а по одному документу в несколько потоков
yopp
Складывать документы в очереди и из очереди выгребать в несколько потоков и складывать в монгу
Nikita
у меня итак из кафки
Nikita
почему в несколько потоков должно быть быстрее?
yopp
Распараллеливание сериализации
yopp
В целом, пройдитесь профайлером
yopp
В visualvm должно быть видно где затык
Nikita
а батчи на стороне монги последовательность выполнения какую-то гарантируют? мне порядок важно не потерять. если там батчи параллельно будут выполняться то не получится
yopp
А у вас какие операции? Insert или Update?
Nikita
upsert в основном
yopp
Попробуйте без батчей
Nikita
если я два батча ordered шлю - то они последовательно будут?
yopp
А сколько у вас RTT до монго-сервера?
yopp
если я два батча ordered шлю - то они последовательно будут?
Если вы их шлете последовательно, то да. Если параллельно, то нет
Nikita
ммм, если пингом до 0.7-1.5мс
yopp
Посмотрите профайлером что происходит
yopp
Вы выбираете из Кафки сразу?
yopp
Проверьте что соединение установлено перед тем как делать вставку
yopp
Исключите факторы которые могут влиять на ваш тест
Гена
Коллеги, столкнулись с очень забавной штукой) Клиент, через приложения отправляется запросы в коллекцию. Запросы на запись - create, insert и update. Только вот инёрты в оплог попадают а вот, например апдейты, нет. В чем может быть проблема? При этом изменения вступают в силу без проблем, то есть документы обновляются
Гена
проблема только с одной коллекцией в этой бд
Anonymous
Разбить документ на несколько, с меньшим размером массива. Но вообще странно выглядит. Покажите пожалуйста explain(executionStats:1)
https://pastebin.com/1ykK9PZf Полностью идентичный апдейт я не могу создать, сгенерил что-то похожее и выполнил на исходном документе в тестовой среде.
Araik
подскажите пжл, не оч понимаю, с чем может быть связана эта ошибка ? Invalid key '0': update only works with $ operators and pipelines
Araik
запрос делаю так
Dmitriy
зачем второй массив внутри $set?
Dmitriy
имхо должно быть так: ['$set': ['start.str' => $day->start, 'end.str' => $day->end]]
Araik
уф, блин, как же я намучался с этим синтаксисом))
Araik
спасибо!)
Nikita
и возвращаясь к балкам
Nikita
https://i.gyazo.com/edddf23200d3ca8ef38def113aca42ac.png
Nikita
хоспади как сложно. короч, w:0 мимо журнала при этом ответ монги ждет в основном
Nikita
any ideas?
Nick
еще раз, балк ждет ответа по всем запросам в нем, соответственно вы видите время самого медленного запроса
Nikita
w:0
Nick
и что?
Nikita
а что он ждет тогда? у меня upsert там и w:0
Nick
монга должна запрос обработать, она просто не гарантирует что запишет на диск
Nikita
окей, тогда будем профилировать запрос
Nick
запросы
Nick
их у вас в балке много
Nick
а
Nick
и как вы сам балк собираете?
Nikita
~1000
Nikita
про "как собираю" не понял. через спринг темплейт
Nick
про "как собираю" не понял. через спринг темплейт
как? ссылочку дайте на туториал или еще чего, малоли там криво это делается
Nick
всегда можно собрать его вручную и проверить работу с драйвером напрямую
Nikita
ну там по сути превращается в List.of(WriteModel) и экзекьютится
Nikita
https://pastebin.com/yvT5EJbR в итоге вот такого формата батчи
Nikita
https://pastebin.com/YD4SjnMF большая часть такая изменений беру из дебага тестов, поэтому батчи маленькие, так там по 1к примерно записей
yopp
и возвращаясь к балкам
Это на 1к соединений?
yopp
Тьфу, документов
yopp
Не видно числа вызовов
Nikita
это пройфайлер жавы, в серднем там 1к да, 7 минут работы пройфайлера
Nikita
а профайлер монги пишет операции на запись медленные? балки как спрофилировать можно? включили, но не видно балков. 100мс дефолтные стоит
Nick
а профайлер монги пишет операции на запись медленные? балки как спрофилировать можно? включили, но не видно балков. 100мс дефолтные стоит
запросы в балке выполняются раздельно и получается каждый по отдельности укладывается в 100мс
Nikita
тогда это не бьется с тем что ждем монгу по самому медленному
Nick
тогда это не бьется с тем что ждем монгу по самому медленному
это хороший вопрос, а точно ordered:false на батче проставляется?
Nikita
щас подебажу не теряет ли спринг конечно, но должно
Nick
щас подебажу не теряет ли спринг конечно, но должно
можете скинуть на пастбин кусок кода где делаете балк запрос?
Nikita
короч пока что распараллелил батчи на более мелкие - то есть из кафки 2к читаю и в несколько потоков закидываю - стало шустрее в 3 раза примерно, но пока не врубился что за жизнь и почему так:)
Nick
скиньте кусок кода
komron️
Всем привет. Я использую mongoengine для питона, и у меня маленькая проблема с либой. Описание я только что добавил на их трекер в гитхаб: https://github.com/MongoEngine/mongoengine/issues/2292 Кто-нибудь может объяснить в чем тут проблема и как ее решить? спасибо.
Anonymous
Приветствую, как обновить значение в бд монго через переменную, используя nodejs? Условно сейчас конструкция такая, вот так получаю payload для апдейта бд. if (input[i].split(':')[0] == "Bitcoin") { btcaddress = input[i].split(':')[1]; payload.push("btc: +btcaddress"); } return payload; А вот так назначаю. $set: { adresses: payload } Оно обновляет бд, но не так как хочется. Пейлоад должен залететь в обьект adresses в поле btc.
Araik
Подскажите пжл, как правильно искать в массиве наличии 2 элементов и совпадение значение третьего?
Araik
Araik
Мне нужно посчитать документы, которые в массиве events имеют элементы metric: resolution_time, type:fullfill, и time в диапазоне от и до
Araik
сейчас возвращается пустой результат - точнее 0
yopp
Забросьте пожалуйста пример запроса на play.db-ai.co
Araik
вот так это выглядит в базе
Araik
чет не разберусь как ссылку дать
Araik
Araik
Вот такой запрос, выдает ошибку, что elemMatch должен быть объектом
Araik
$elemMatch needs an Object
Araik
попробовал передать объект, но все равно не находит документы
Nick
справа вверху Create&Run - потом Public Link скидывайте сюда
Araik
у меня такого нет, и после нажатия ссылки url страницы не меняется
Araik
возможно из-за ошибки ? Error: stage events is not allowed