Nick
можно так делать
а что не так?
Andrey
нет
ладно буду танцевать от mongostat
yopp
не надо
Andrey
?
yopp
https://www.percona.com/blog/2018/07/05/configuring-pmm-monitoring-mongodb-cluster/
yopp
уже готовые решения есть, не стоит изобретать велосипед
yopp
потом глобальные метрики кеша wt смысла почти не имеют
Andrey
у меня везде заббикс. графана с него данные получает.
Andrey
потом глобальные метрики кеша wt смысла почти не имеют
а что имеет? почему cache параметры не так важны?
yopp
давайте от обратного, зачем они вам?
Andrey
давайте от обратного, зачем они вам?
заказчик просит выводить. а им на каком то симпозиуме по монго сказали помониторить параметры кэша, не упираются ли они в эти показатели
yopp
мониторить что?
yopp
и что значит «упираются»? :)
yopp
так то можно вообще все циферки какие есть вывести, я делал экспортер в прометей который собирал все метрики на уровне коллекций. только толку от этих циферок никаких, если не знать куда, зачем и как смотреть
yopp
смотреть на кеш бессмысленно, он как уличный котик, должен быть полный и немного грязный
Andrey
как раз среди заказчика я не нашел людей которые точно бы мне сказали что они ищут)) скорее всего этого точно никто не знает. Просто ищут ботлнеки, анализируют.
yopp
глобально смысл имеют evictions, pages/bytes read into и pages/bytes writen from
yopp
не там ищут
Andrey
yopp
да, но это относительные метрики
yopp
если монга начала тормозить, при этом у нас резко выросли evictions и read into, значит резко изменился паттерн запросов и кеш дестабилизировался. вероятно читаем что-то очень жирное
yopp
если собирать метрики из коллекций, то можно будет увидеть какая коллекция устроила дискач
yopp
но это уже диагноситка отказов
yopp
кеш не то место где надо искать узкие места
yopp
узкие места надо искать в статистике запросов
Andrey
если собирать метрики из коллекций, то можно будет увидеть какая коллекция устроила дискач
интересно. Есть огромная коллекция, куда все пишется скоупом, есть подозрения, что там лимиты какие то срабатывают
yopp
нет никаких лимтов
yopp
срабаывать вообще нечему
yopp
дайте заказчику вот эту ссылочку https://db-ai.co
yopp
пусть приходят, а я им расскажу куда смотреть, куда не смотреть и как найти куда они уперлись
Anonymous
hello
Kiku
А не подскажите пожалуйста, какие бесплатные хостинги, чтобы и бота туда можно было закинуть, имеют удобненькую панель управления для баз MongoDB?
倫太郎
а, вообще тут чат по монге, но бесплатных хостов тока DO если пересоздавать каждые 2 месяца сервак а ваще хуки + хероку
Aga
это чат по монге, повторяю
Не злись, он ещё молодой
dima
Приветствую. Подскажите, учу монгу и работаю и в терминале и в компасе. так вот в компасе фильтр не работает с этим условием { results: { $elemMatch: {$gte: 70, $lt:80 } } } красным горит и не пускает, хотя в доке этот же пример со скрином из окна компаса. и там вроде как работает. Мб в новой версии синтаксис изменился? Или я что делаю не так. Объясните плз
dima
Roman
Всем привет, подскажите пожалуйста, есть ли возможность в mongoose создания многоуровневого объекта с возможностью его изменения в будущем, либо нужно использовать только populate для этого?
dima
Вероятно, ты не указываешь на коллекцию. dB.someDb.find({results : {<и все остальное сюда>}})
Спасибо за ответ, однако оказалось что синтаксис верный. На форуме mongoUniversity подсказали вот это I had the same issue for a while, it seems that Compass is very sensitive. Things that helped: reset the query before inputting the filter. do not copy/paste the filter, type it in. disconnect/reconnect to the DB, especially if you are low on memory on the computer помогло 😀
AlphaGammaBeta
утро! ребят, косяк... то ли код кривой, то ли ещё чего... в общем, у меня в базе появилось множество одинаковых записей... много... тысяч 10... а нужных всего тысяч 7 остальных, если я ничего не путаю... вопрос.. как удалить все повторяющиеся записи?
Vova
Я бы на своём языке программирования сделал цикл foreach который достаёт все записи, в цикле проверяет наличие таких же и выполняет deleteMany по айдишкам
AlphaGammaBeta
Я бы на своём языке программирования сделал цикл foreach который достаёт все записи, в цикле проверяет наличие таких же и выполняет deleteMany по айдишкам
то есть перебарть for'ом find, собрать все вернувшиеся _id в лист, и сделать delete_many, оставив один какой-нибудь?)
Vova
то есть перебарть for'ом find, собрать все вернувшиеся _id в лист, и сделать delete_many, оставив один какой-нибудь?)
Да, для каждого элемента list'a делаешь поиск по всем остальным на соответствие текущему, если найдено то удаляешь
AlphaGammaBeta
сейчас попробую...
Nick
тут вообще можно несколько проще, главное убедиться что дубли прям полностью дубли и неважно какой из доков дропать. можно создать новую коллекцию и в ней уникальный индекс, по вашим критериям уникальности, потом просто перекинуть все данные из текущей коллекций в ту что с индексом, игнорируя ошибки дубликатов. а потом удалить текущую коллекцию и переименовать новую как старую
Nick
причем индекс вам так и так надо делать раз такая ошибка появилась раз, то появится еще
AlphaGammaBeta
из того, что я вижу - прям полностью дубли... рученьки кривенькие... с индексом я работать ещё не умею(( я вообще пытался сделать таймер.. БД, собирающая инфо по пользователям таймера как-то по приколу получилась...
AlphaGammaBeta
если индексировать, то это мне само заполнение базы переделывать... из всего, что может быть уникальным, у меня только набор {"user_id": 1, "type": 1, "date": 1} но эффективность этого индекса стремиться к нулю...
Nick
если индексировать, то это мне само заполнение базы переделывать... из всего, что может быть уникальным, у меня только набор {"user_id": 1, "type": 1, "date": 1} но эффективность этого индекса стремиться к нулю...
не понимаю что вы понимаете под "эффективностью", но консистентность бд это очень важная хрень ради которой можно и десяток индексов настроить
Nick
если индексировать, то это мне само заполнение базы переделывать... из всего, что может быть уникальным, у меня только набор {"user_id": 1, "type": 1, "date": 1} но эффективность этого индекса стремиться к нулю...
ничего не мешает посмотреть какие запросы у вас выполняются и изменить порядок полей в индексе, чтобы чтото начало его использовать. например я вижу поле с датой, просто поставьте его в начало и уже любая выборка по дате будет его использовать
Bro
база данных уже скоро до терабайта доползет
Bro
у кого сколько база данных весит?
Мечтатель
Bro
8
Viktor
@dd_bb а есть общая методика расчета capacity на запись в монге? Кол-во записей/сек, индексы, размер документа и железо на сервере известны
Nick
у кого сколько база данных весит?
по месту 10тб, но оно досаточно холодное
Bro
о норм.
Bro
тесты наверняка есть на гитхабе
Viktor
Нагрузочное тестирование и экстраполяция текущего использования
делаем такое, но я пока не понимаю как привязать результаты к iops'ам
Viktor
сейчас воркфлоу такой: 1. пишется код 2. тестируется перформанс тестами 3. снимаются метрики с CPU/RAM 4. сравниваются с предыдущими запусками, делаются выводы
Viktor
в этой схеме отсутствует снятие метрик со стораджа, это как-то можно вообще мониторить?
yopp
iostat например
yopp
но ваше узкое место тут перфоманс тесты
yopp
если это часть CI, то скорее всего они дают вам ложные цифры
yopp
если вы специально не притягивали их к боевым условиям
Viktor
нет, это не CI, это запланированные сессии прямо на продакшене
yopp
я не вижу смысла деать перфоманс тестирование на продакшене
yopp
у вас на продакшене уже есть нагрузка
Viktor
если быть более точным - проводится в несколько этапов