Как проверить, есть ли у namy connections сервер mongodb и ограничение waht в conf и по умолчанию waht?

#mongodb

#mongodb

Вопрос:

У меня есть mongodb 4.4.0 и проект symfony с очередью и множеством потребителей, я столкнулся с некоторой проблемой, когда многие потребители выполняют задания, сохраняя много продуктов в БД, загрузка процессора сервера быстро увеличивается. Я хочу проверить, сколько подключений у меня есть в какой-то момент, исследовал документ, в котором я нашел информацию об ограничении подключений, и это равно 64 кб, это означает 64 000, правильно? Но я хочу понять, сколько соединений открылось в какой-то момент, для чего я выполнил эту команду в оболочке

 db.serverStatus().connections
  

Но столкнувшись с пустым результатом, исходный результат выглядит следующим образом — script executed successfull but there are no result . Почему? И как проверить? Я протестировал это на компьютере, где присутствует mongo — 4.15.0-117- общий.

на компьютере, где я выполнил docker-compose up для изображений mongobd

 $ ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-m: resident set size (kbytes)      unlimited
-u: processes                       193076
-n: file descriptors                1024
-l: locked-in-memory size (kbytes)  16384
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 193076
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited
  

и точно в контейнере mongodb

 root@mongodb:/# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 193076
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048576
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
  

но странный случай, когда мои потребители работали, и запрос db.serverStatus().connections повторил пустой результат.
На самом деле я столкнулся с медленной скоростью, когда мои потребители вводят много строк в документы, первое, что я сделал, это использовать транзакцию, и это помощь, но через некоторое время я снова столкнулся с медленной скоростью, прямо сейчас я думаю о сегментировании моего mongodb, может ли это решить проблему со скоростью, когда многие потребители выполняют установку большого количества строк в документах?

Обновить

Я выполнил эту команду напрямую в shell и столкнулся с тем же пустым результатом

 > db.serverStatus().connections
> db
test
> db
test
> use symfony
switched to db symfony
> db.serverStatus().connections
> db.serverStatus().connections
> 
  

Комментарии:

1. 64 кб означает 65536. Это значение по умолчанию, и его можно изменить в конфигурации или командной строке. Это не имеет никакого эффекта, если оно превышает системные ограничения, такие как ulimit в Linux. Каждое соединение использует что-то вроде 1 МБ оперативной памяти. Убедитесь, что у вас достаточно. Ошибки при просмотре страниц могут легко растопить процессор с дисковой прошивкой. Пустые соединения не имеют смысла. Как и в последнем предложении. Что ты пытался сказать на русском / украинском? Возвращает ли db.serverStatus() что-нибудь? Для этого требуются как минимум разрешения ClusterMonitor.

2. Если для вашего развертывания требуется аутентификация, убедитесь, что вы аутентифицированы.

3. @Alex Blex когда я выполнил команду db.serverStatus().connections в оболочке, у меня был результат — script executed successfull but there are no result

4. Я обновил свой вопрос

5. Это оболочка или robomongo?