Josh
Сергей
Сергей
Josh
Сергей
Josh
звучит как проклятье 😁
Josh
тогда хоронить число при апдейте, раз тащить надо сразу
Josh
я бы посоветовал более плоско реорганизовать структуру
Сергей
Josh
тут явно напрашивается значение unions у пользователя, если вообще не union
Сергей
Nick
А в базу оно сохраняется? Или вам не нужно?
Slavik
Здравствуйте, в монго можно сделать проверку? Например удалить компанию только если в ней нету работников?
Semeon
Если вдруг кому-то интересно, то у меня получилось обновить «Монгу» на Debian до 4.2
Ivan
Anonymous
доброй ночи всем.
надо перенести коллекцию из мульонов документов в другую БД (с нуля), и добавить там дополнительное поле. как это лучше всего сделать?
await oldVideos.find().forEach(async video => {
await videos.insertOne(video);
});
такой способ имеет 2 минуса:
1. долго как-то
2. не понятно как так добавить еще одно поле в ходе переноса
какие еще есть варианты?
Anonymous
ладно, пока так
await videos.insertOne({
...video,
donor: 'website.com',
});
если можно более эффективно скажите плз
Anonymous
в одной операции изменить поле и удалить другое невозможно?
Nick
Hellomik
хай пацаны кто знает почему не работает
await this.takeChecker
.db('grataDatabase')
.collection('users')
.findOne({
moderator: {
institutionIds: {
$elemMatch: [
new ObjectID('5dab1c214f2e663eb08ca521'),
],
},
},
});
Hellomik
Hellomik
если я уберу $elemMatch и поставлю чисто массив работает
хай пацаны кто знает почему не работает
await this.takeChecker
.db('grataDatabase')
.collection('users')
.findOne({
moderator: {
institutionIds: [
new ObjectID('5dab1c214f2e663eb08ca521'),
new ObjectID('5dade7f9af3ead39e8cf7b76'),
],
},
});
Aleksandr
Что значит не работает и какой результат корректный?
Aleksandr
ЭлемМатч это вообще надо юзать когда в массиве объекты
Hellomik
Aleksandr
Hellomik
ну мне нужна что бы хоть один совпадал
Hellomik
то что внутри institutionIds
Hellomik
я поменял elemMatch на or all in
Hellomik
0 changes
Vova
@dd_bb
Nick
Hellomik
это имеешь виду ?
Nick
Уберите элемматч
Hellomik
Hellomik
(я там поменял на String)
Nick
У вас ид в виде строк?
Hellomik
ага
Nick
Тогда да
yopp
Артем
Вероятнее всего изменилась структура нагрузки. Ищите проблемные запросы. Скорее всего появилось что-то с collscan по всему шарду.
Вторая проблема что у вас в монгу стреляет оом. Проверьте что монга корректно видит доступную ей память, что у вас под кэш wt выделено не больше половины этого объёма. Если кроме монге на хосте есть другие сервисы — уберите их. Если у вас на хосте больше одной монги — вынести их на отдельные хосты. Если на хостах с монгами есть монгосы, то вынести монгосы на отдельные хосты.
Запоздалое спасибо за советы:) Всё это время искал причину, но пока так и не нашёл. На всех машинах кэш wt выставлен по-дефолту, но поле "bytes currently in the cache" показывает, что ещё целый 1гб из 7 свободно. Команда db.serverStatus().tcmalloc.tcmalloc.formattedString выдаёт что почти вся память машины(15гб) в поле Bytes in use by application.
Долгие запросы также мониторил, есть aggregate запросы, но они занимают максимум 200мс и не такие частые, используются для мониторинга сервиса, пробовал отключать на время, но не помогло, память всё равно продолжает течь. Заметил, во-первых, что память проседает только на секондари и , во-вторых, что при падении одной из нод по оом'у начинают проседать по памяти несколько других нод из разных шардов. Не знаю в какую сторону копать дальше, уже думаю попробовать обновить саму монгу (сейчас используем 3.4.20)
yopp
если в новой базе уже есть документы, то сначала сделать дамп с оригинальными документами, потом сделать $set, а потом сделать дамп с документами с полем
yopp
Запоздалое спасибо за советы:) Всё это время искал причину, но пока так и не нашёл. На всех машинах кэш wt выставлен по-дефолту, но поле "bytes currently in the cache" показывает, что ещё целый 1гб из 7 свободно. Команда db.serverStatus().tcmalloc.tcmalloc.formattedString выдаёт что почти вся память машины(15гб) в поле Bytes in use by application.
Долгие запросы также мониторил, есть aggregate запросы, но они занимают максимум 200мс и не такие частые, используются для мониторинга сервиса, пробовал отключать на время, но не помогло, память всё равно продолжает течь. Заметил, во-первых, что память проседает только на секондари и , во-вторых, что при падении одной из нод по оом'у начинают проседать по памяти несколько других нод из разных шардов. Не знаю в какую сторону копать дальше, уже думаю попробовать обновить саму монгу (сейчас используем 3.4.20)
Добавить мониторинг wt bytes in cache, bytes written in cache, bytes read from cache, pages evicted на всех коллекциях и индексах
yopp
и смотреть какая коллекция или какой индекс начинают течь
yopp
но вообще oom и монга это очень плохая идея
yopp
особенно если на хосте есть что-то, что может попросить выделить ему много памяти
yopp
3.4 уже EOL, стоит попробовать поехать до 3.6
yopp
обновить до .23 точно нужно
yopp
у вас на хосте строго одна монга?
Артем
хосты у нас чисто под монгу, из 40 нод стабильно падают 3-4 в сутки, пока сделал затычку в виде Restart=on-failure, т.к. не успеваю поднимать
yopp
и это не докер?
Артем
нет
yopp
а какой qps?
yopp
и какой средний размер ответа?
yopp
сколько соединений?
yopp
хотя если «то ещё целый 1гб из 7 свободно», то течёт не кеш, да
yopp
круг подозреваемых в 3.4 не очень широкий: соединения, буферы под сортировки, буферы под агрегации
yopp
бага в монге)
Гена
Коллеги добрый день
Такой вопрос
При выполнении запросов на чтение в 900rps время ответа запроса в норме
Как только 1000rps - то время отклика увеличивается в разы
При этом никакой утилизации ресурсов нет
Мне кажется, что дело в connection стринге. Все параметры в URI выставлены по дефолту
Хотя я могу быть не прав.
Подскажите, в чем может быть проблема
Спасибо
yopp
yopp
поставьте slowlog трешхолд равный вашим «в разы» и посмотрите, начинают ли падать в slowlog запросы когда у вас «увеличилось время в разы»
Гена
yopp
задержка по версии какого компонента?
yopp
монги или вашего приложения?
Гена
приложения
yopp
если приложения, то убедитесь что это не проблема вашего приложения
yopp
yopp
если в логе ничего не будет, ищите проблему в приложении
yopp
или в оси
Denis
yopp
это плохой совет