MongoDB близка к максимальной памяти на PaaS - PullRequest
0 голосов
/ 17 апреля 2020

Мы запускаем небольшое приложение NodeJS, которое управляет подписками на наши мобильные приложения. Его бэкэнд представляет собой MongoDB с только 100 МБ памяти. В настоящее время размер данных составляет около 120 МБ. Все это размещается на PaaS под названием Nodechef.

После примерно недели работы сервер Mon go использует 98 МБ / 100 МБ памяти. Не зная, что произойдет, мы принудительно перезагрузили компьютер, и он опустился до 70 МБ или около того. Это медленно ползет обратно.

Несколько вопросов:

  • Это нормальное поведение для Mon go, чтобы продолжать расти в памяти до максимума?

  • Что происходит, когда оно достигает максимума? Будет ли он перезагружаться или делать 1023 *, или делать какую-то сборку мусора?

  • Перезапуск еженедельно - довольно нормальное решение для этого типа проблемы?

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Согласно это вы можете попробовать установить hostInfo.system.memLimitMB, но я удивлен, что MongoDB вообще работает с 100 МБ доступной памяти (если это точно).

Если процесс MongoDB запущен Недостаточно памяти (т. е. запрашивает выделение памяти, которая запрещена), она может быть немедленно прервана.

0 голосов
/ 22 апреля 2020

Это конкретный ответ Nodechef c, основанный на том, как они справляются с этим. Другие PaaS могут работать по-разному:

"Когда он достигает 125%, включая SWAP, он автоматически перезапускается. Он выполняет постепенное отключение, поэтому проблем не должно быть.

В отношении Если это нормально, зависит, я видел случаи, когда приложение не закрывает курсоры должным образом, вызывая утечку курсора на сервере базы данных, что приводит к непрерывному увеличению памяти. Другой проблемой также может быть фрагментация памяти на самом сервере. перезапуски не происходят ежечасно, с тобой все в порядке. Взять пару недель, чтобы достичь своего пика - это нормально. "

...