
М
22.08.2018
15:29:52
спасибо!

yopp
22.08.2018
15:30:16
у документа нет позиции в коллекции

М
22.08.2018
15:39:41
подскажите еще такой вопрос: как можно изменить поле с помощью $set, если заранее название поля неизвестно, но передается в функцию аргументов ?

Google

М
22.08.2018
15:40:34
Categories.update({ _id: id }, {
$set: {
field: value,
},
});
то есть тут нужно изменить не поле field, а поле с названием из переменной field
судя по всему вот так:
const setObject = {};
setObject[field] = value;
Categories.update({ _id: id }, {
$set: setObject,
});

AstraSerg
22.08.2018
16:38:20

М
22.08.2018
16:58:03
При большом количестве полей и бд имеем много ненужной рутинной работы

AstraSerg
22.08.2018
17:02:15

Constantin
22.08.2018
17:03:29
Ребят, всем привет! А что за ересь, mongoose ругается в последней версии на: findAndModify, remove, update — что методы deprecated, и будт удалены. Есть предпосылки со стороны MongoDB?

AstraSerg
22.08.2018
17:13:56

Constantin
22.08.2018
17:22:29
Ну ещё не правильно
Монгус раньше времени панику поднял. Пока в драйвере официальном не сделали все изменения. Как сделают да, все будет как по новой спеке, и старые методы отомрут
И как я понял подобные изменения произойдут и в других драйверах для других языков, чтобы переходя от языка к языку не приходилось переучивать команды MongoDB

Google

AstraSerg
22.08.2018
18:11:58

М
22.08.2018
18:34:13
Или где я туплю?
Названия полей остаются неизменными

Constantin
22.08.2018
18:48:35

М
22.08.2018
19:15:45

Алексей
22.08.2018
19:24:11
господа а можно как то ускорить начальный синк ? без разврата с rsync и таким ?

AstraSerg
22.08.2018
19:32:41

Алексей
22.08.2018
19:33:09
ну как то странно с чудесами. я вижу что упирается примерно в ядро.
а это довольно не то что я ожидаю увидеть
я конечно понимаю оплог и там всё такое но почему нельзя тащить коллекции в паралель тут логика пасует
лучший ответ — потому что не написали

Serhii
22.08.2018
20:25:14
Подскажите пожалуйста почему на такой коннект к монге
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
MongoClient.connect(url, function(err, client) {
if(!err) {
console.log('connect');
}
});
выдает такую ошибку, хотя по доке это вроде бы стандартный коннект
DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect
заранее спасибо

yopp
22.08.2018
21:25:22
Но если хочется прямо очень быстро, то быстрее переноса снепшотов ничего не придумали

m
23.08.2018
05:55:26
Привет, подскажите, если используешь монгус, можно как-нибудь ему сказать, что вот эта схема может быть любой, и сохранять что хочешь ?

Constantin
23.08.2018
06:14:20

Google

m
23.08.2018
06:23:04

Serhii
23.08.2018
06:30:56

Constantin
23.08.2018
06:47:42
Почему падает сказать не могу

Serhii
23.08.2018
06:48:36
Все равно спасибо)

Nick
23.08.2018
08:13:06
првоеряйте корректность адреса


Alex
23.08.2018
08:48:52
Приветы
Можете подсказать, есть ли человечий способ профайлингом найти не самые медленные запросы, а самые частые?

yopp
23.08.2018
08:54:24
В new relic тоже что-то на эту тему есть

Alex
23.08.2018
08:55:20
New Relic очень сильно дорогой. Но классный, да

yopp
23.08.2018
08:55:57
Можно на коленке, включив slowms: 0 и читать system.profile через tailable cursor

Alex
23.08.2018
08:55:58
За вивид спасибо - гляну

yopp
23.08.2018
08:56:21
вивид дороже ньюрелика

Alex
23.08.2018
08:57:05
Ладно, и на том спасибо ?

yopp
23.08.2018
08:57:24
https://github.com/mrsarm/mongotail

Alex
23.08.2018
08:58:57

AstraSerg
23.08.2018
08:59:18

Google

yopp
23.08.2018
08:59:41
и вот https://github.com/heewa/mongotime
но у mongotime кажется нет возможности показать запрос
и ещё такой момент: из запроса желательно отфильтровывать значения, оставляя только ключи.
очень часто бывает, что есть запросы, например «последние сообщения», которые не такие медленные чтоб попасть в профайлер, но их очень много и у них постоянно меняется ключ в запросе converstations.find({user_id: xyz}).sort({last_message_at: -1})
в таких запроса значения xyz или -1 лучше отбросить, ключи отсорировать и считать статистику по таким вот нормализованным отпечаткам, например сразу в нотации команд: {find: ‘conversations’, filter: {user_id: nil}, sort: {last_message_at: nil}}.
очень часто, такие запросы и надо оптимизировать

Admin
ERROR: S client not available

Alex
23.08.2018
09:16:32
Ну вот в общем да. У меня сейчас затык в том, что инстанс (он один, не бейте ногами), фризится иногда. Профайлер показывает что медленных запросов нет. Значит либо проблема ниже с дисковым IO (это потом будем изучать), либо летит жирная пачка мелких и коротких запросов. И исходя из того, как работает приложение, которое базу использует, скорее второе чем первое

yopp
23.08.2018
09:18:42
начните с https://www.percona.com/software/database-tools/percona-monitoring-and-management
а, туда и query analytics завезли
ну вот и решение :)
https://pmmdemo.percona.com/graph/d/1Xwy8CKmz/_pmm-query-analytics?from=now-12h&to=now&orgId=1&var-host=mongocnf1wt&queryID=adcdc4d03a8376dc3c71f9079b7c3df1&type=mongo

Alex
23.08.2018
09:23:43
Оно еще и бесплатное, чтоли ?)

AstraSerg
23.08.2018
09:24:11

yopp
23.08.2018
09:24:27
проблема всех графиков в том, что они бесполезны без человека который их умеет читать
как кардиограмма

Alex
23.08.2018
09:25:31

AstraSerg
23.08.2018
09:26:00

Alex
23.08.2018
09:36:34
А существуют какие-то "нормальные" значения для количества одновременных команд в монге?

yopp
23.08.2018
09:37:30
нет

Google

Alex
23.08.2018
09:37:58
Понятно, что от железа зависит.

yopp
23.08.2018
09:39:45
вам стоит начать с понимания что такое «фриз»
это очень абстрактный симптом
более того, который который может быть совершенно не связан с монгой.
например при включеном tls и достаточно частой аутентификации, в системе может закончится энтропия и хендшейк при установке соединения будет блокироваться до момента пока пул энтропии достаточно не наполнится, а это могут быть минуты


Alex
23.08.2018
09:50:01
вам стоит начать с понимания что такое «фриз»
а вот я и пытаюсь понять.
api-сервер иногда залипает на минуты. Я по нему прошёлся профайлером - с ним всё в относительном порядке. Глянул после этого в бесплатный new relic - он говорит, что база отвечает очень долго в моменты залипания.
Вот теперь пытаюсь понять, что в такие моменты происходит с базой. Печаль в том, что это происходит в разное время и в разных местах.
Рабочие версии следующие:
- приложение иногда извлекает больше данных чем нужно, но быстрыми маленькими запросам по id. Однако в некоторых случаях их может быть очень много. Соответственно если это так, то хотелось бы увидеть, что в базу ушла условная тысяча запросов вот такого "сорта". Ну и соответственно обратно идти в приложение, и делать так, чтобы запросов было меньше. Сразу идти нельзя, потому что таких потенциальных мест довольно много, и все их не поправить за раз.
- что-то не так с дисковым IO. Такое уже было на амазоне у нас, но правда на инстансе поменьше. Но тогда всё было характерно видно на графиках. Сейчас - нет.
А tls для хендшейка с базой не используется - база с приложением на одном инстансе стоят.


Constantin
23.08.2018
09:51:41
а вот я и пытаюсь понять.
api-сервер иногда залипает на минуты. Я по нему прошёлся профайлером - с ним всё в относительном порядке. Глянул после этого в бесплатный new relic - он говорит, что база отвечает очень долго в моменты залипания.
Вот теперь пытаюсь понять, что в такие моменты происходит с базой. Печаль в том, что это происходит в разное время и в разных местах.
Рабочие версии следующие:
- приложение иногда извлекает больше данных чем нужно, но быстрыми маленькими запросам по id. Однако в некоторых случаях их может быть очень много. Соответственно если это так, то хотелось бы увидеть, что в базу ушла условная тысяча запросов вот такого "сорта". Ну и соответственно обратно идти в приложение, и делать так, чтобы запросов было меньше. Сразу идти нельзя, потому что таких потенциальных мест довольно много, и все их не поправить за раз.
- что-то не так с дисковым IO. Такое уже было на амазоне у нас, но правда на инстансе поменьше. Но тогда всё было характерно видно на графиках. Сейчас - нет.
А tls для хендшейка с базой не используется - база с приложением на одном инстансе стоят.
У вас репликасет?


yopp
23.08.2018
09:52:08
а вот я и пытаюсь понять.
api-сервер иногда залипает на минуты. Я по нему прошёлся профайлером - с ним всё в относительном порядке. Глянул после этого в бесплатный new relic - он говорит, что база отвечает очень долго в моменты залипания.
Вот теперь пытаюсь понять, что в такие моменты происходит с базой. Печаль в том, что это происходит в разное время и в разных местах.
Рабочие версии следующие:
- приложение иногда извлекает больше данных чем нужно, но быстрыми маленькими запросам по id. Однако в некоторых случаях их может быть очень много. Соответственно если это так, то хотелось бы увидеть, что в базу ушла условная тысяча запросов вот такого "сорта". Ну и соответственно обратно идти в приложение, и делать так, чтобы запросов было меньше. Сразу идти нельзя, потому что таких потенциальных мест довольно много, и все их не поправить за раз.
- что-то не так с дисковым IO. Такое уже было на амазоне у нас, но правда на инстансе поменьше. Но тогда всё было характерно видно на графиках. Сейчас - нет.
А tls для хендшейка с базой не используется - база с приложением на одном инстансе стоят.
начините с observability. это всё гадание на кофейной гуще, которое вас никуда не приведёт
собирайте метрики с инстанса и с сервера базы
смотрите что происходит в момент отказа


Alex
23.08.2018
09:52:28
У вас репликасет?
Нет. Дело происходит на предрелизной платформе - там всё живёт в одном AWS инстансе

Constantin
23.08.2018
09:53:16

Alex
23.08.2018
09:54:46

yopp
23.08.2018
09:56:17