
AstraSerg
02.10.2018
09:16:04

Constantin
02.10.2018
09:16:12
Попробуйте пробежаться по этому разделу

Пасюк Лошадкин
02.10.2018
09:16:19

Constantin
02.10.2018
09:16:28
Чтобы мы с вами на одном языке говорили, будет проще диагностировать

Google

Constantin
02.10.2018
09:16:41
Нужно подключиться к одной из баз, и посмотреть состояние реплики
rs.status()
можете сделать это через mongo

Пасюк Лошадкин
02.10.2018
09:17:51
Просто суть в том, что половина ботов функционирует и обращается к датабазе, а другая половина нет

Bodya
02.10.2018
09:21:16
заработало

Constantin
02.10.2018
09:22:15
Есть три сервера: один из них ведущий, второй ведомый, третий арбитр (или тоже ведомый)
1. Если ведущий выпадает, начинаются выборы
2. Результаты выборов, или избрали нового ведущего, или новые выборы, пока выборы идут работать не будет
Возможные проблемы:
1. Не избран ведущий, выборы продолжаются и продолжаются (обычно ошибка настройки реплики)
2. Нет доступа к ведущему с машины, с которой вы получаете такие ошибки
2.1. Возможно адрес ведущего не попадает в connection string — строку, по которой вы подключаетесь к реплике
2.2. Возможно ведущий не доступен с машины, с которой вы пытаетесь подключиться
Поздравляю вас!
Это на сайте делать?
Через утилиту mongo подключитесь к одному из узлов, и на нем попробуйте. Как только подключитесь в REPL должно будет быть написано что-то такое: PRIMARY:> или SECONDARY:> — это будет хороший знак

Bodya
02.10.2018
09:24:56
Старый код тоже работает

Google

AstraSerg
02.10.2018
09:33:32

Bodya
02.10.2018
09:35:07
Если с магией работает значит всё окей

Пасюк Лошадкин
02.10.2018
09:39:39
Но как на них влиять?

AstraSerg
02.10.2018
09:44:04
Еще раз. Откройте командную строку и вбейте в ней mongo и нажмите ентер
Получилось?

Пасюк Лошадкин
02.10.2018
09:45:58
Попозже начну

AstraSerg
02.10.2018
09:46:20
Ок

Dmitriy
02.10.2018
09:55:06
ребят, а в монге можно опредилить уникальный индекс схеме до создания документа? ткните носом в доку пожалуйста, если можно

Bodya
02.10.2018
09:55:58

Nick
02.10.2018
09:57:01

Dmitriy
02.10.2018
09:57:32

Banschikov
02.10.2018
10:05:47
Всем привет! Подскажите как монга работает с памятью? При вставке большого кол-во данных, монга начинает потреблять большое кол-во памяти. Что она хранит в этой памяти? И что будет если ограничить лимиты монги по памяти в этом случае? Она будет падать?

Bodya
02.10.2018
10:13:41

Banschikov
02.10.2018
10:15:13
Какую память
Я как понимаю за это отвечает механизм WiredTiger. Память оперативная (ОЗУ)

Google

Bodya
02.10.2018
10:15:33

Banschikov
02.10.2018
10:18:03
Если ограничить, то она начнет записывать на диск
Я буду выражатся максимально просто. Получается данные которые попадают в монгу, сначала аллоцируются в ОЗУ, до того времени пока не упрется в потолок. После этого монга будет писать данные напрямую в дисковую систему

Nick
02.10.2018
10:18:19
нет
зависит от кучи факторов, основные из которых оператива, кеш WT и горячий сет данных
по механике, данные всегда пишутся на диск, но при этом остаются в кеше.
во время запрсоа если данных нет в кеше WT, првоеряется кеш операционки механизмами ОС, если в нем нет. то лезем за ними на диск

Пасюк Лошадкин
02.10.2018
10:24:49
А может ли это быть из за большого количества коннектов?
У меня их 100 из 100

Constantin
02.10.2018
10:37:31

Пасюк Лошадкин
02.10.2018
10:37:44
А я вот не в курсе
У меня максимум 7 ботов
По идее, 100 не должен набирать

Banschikov
02.10.2018
10:40:14

Constantin
02.10.2018
10:41:19

Пасюк Лошадкин
02.10.2018
10:41:38
В смысле?

Constantin
02.10.2018
10:42:12
В смысле?
Как я понял у вас на питоне написано приложение.
Один бот — одно приложение?

Пасюк Лошадкин
02.10.2018
10:42:33

Nick
02.10.2018
10:43:19

Constantin
02.10.2018
10:43:28
Скорее всего у вас также connection pool примерно 5-10 коннектов. Но дальше я вам, наверно уже не подскажу куда копать

Google

Bodya
02.10.2018
10:43:56
как я понял slice первым параметром принимает offset, а вторым количество елементов, которое нужно выдать?

Constantin
02.10.2018
10:44:30

Bodya
02.10.2018
10:45:16
Я читал

Banschikov
02.10.2018
10:45:47

Bodya
02.10.2018
10:45:48
Не внимательно читал
Там нужно - перед первым аргументом использовать

yopp
02.10.2018
11:01:50
надо давать половину от памяти выделенной контейнеру

Banschikov
02.10.2018
11:02:23

yopp
02.10.2018
11:03:16
вторую половину пусть занимает дисковый кеш. WT хранит несжатые страницы в памяти и сжимает только при записи на диск. А значит что в дисковом кеше будут храниться сжатые страницы

Banschikov
02.10.2018
11:03:50

yopp
02.10.2018
11:04:05
да

Пасюк Лошадкин
02.10.2018
11:12:15
Короче) я создал новый монго аккаунт
И там все работает
Не знаю, как починить эти кластеры, которые сломались

AstraSerg
02.10.2018
11:36:00

Пасюк Лошадкин
02.10.2018
11:36:20
Если это платно, то нет)
Но мне бы понять: откуда эти соединения
И из за чего их так много
Я смогу сократить их

Google

Пасюк Лошадкин
02.10.2018
11:36:45
Если пойму
У меня максимум 7 ботов подсоединены к базе

AstraSerg
02.10.2018
11:37:36

Пасюк Лошадкин
02.10.2018
11:37:57
Вряд ли. Пароль только у меня

AstraSerg
02.10.2018
11:37:59
логи можете через этот web-интерфейс посмотреть?

Пасюк Лошадкин
02.10.2018
11:38:07

AstraSerg
02.10.2018
11:38:14

Пасюк Лошадкин
02.10.2018
11:39:31
Кому нужна моя бесплатная база на 500мб
Когда можно создать свою

AstraSerg
02.10.2018
11:40:44

invzbl3
02.10.2018
11:41:13
Рекомендую описать еще проблему тех поддержке кластеров. Чем подробнее опишете, тем адекватнее будет ответ)

AstraSerg
02.10.2018
11:41:46
на сколько я помню в компасе есть встроенный фаервол. Если IP ваших ботов статические, можете закрыть доступ всем остальным

yopp
02.10.2018
11:42:12
вы где-то их открываете и не закрываете
ваш драйвер скорее всего поддерживает connection pool
если у вас каждый «бот» это отдельное приложение, проблема может быть и в случае с connection pool. например если ваш драйвер использует пул из 16 соединений, то на 7 приложений это уже 112 штук

Vova
02.10.2018
11:50:15
Как задать лимит для внутреннего массива?
Например есть у меня объект
{
"_id": "123",
"field": "qwerty",
"strings": [
"1",
"2",
// Тут ещё 100 строк
]
}
Как сделать в одном запросе чтобы вернуло вот так
{
"_id": "123",
"field": "qwerty",
"strings": [
"1",
"2"
]
}
То есть обрезать массив, в данном примере до 2 вхождений

yopp
02.10.2018
11:51:34
https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/#elemmatch-projection
обратите внимание что это projection, а не query