В настоящее время я храню данные на своей MongoDB следующим образом:
- 1 база данных на клиента
- каждый клиент имеет около 40 коллекций
- в общей сложности 50 клиентов (существует 40 * 50 = 2000 коллекций)
- размер базы данных составляет 3 ГБ для всех 50 клиентов
Мой сервис MongoDB аварийно завершает работу с ошибкой
"Слишком много открытых файлов "
и MongoDB" Слишком много открытых файлов "?Повышение лимита показывает, как решить проблему, но я по-прежнему получаю сбои.
Ошибка «Слишком много открытых файлов» означает, что в процессе MongoDB используется слишком много файлов, и операционная системажалуюсь.Вот как я знаю, MongoDB использует много файлов:
Получите id процессов MongoDB с помощью service mongodb status
.Идентификатор процесса будет отображаться в информации
Затем, чтобы получить файлы, используемые MongoDB, я использую эту команду lsof -a -p <ProcessId>
Когда я запускаюэтой командой я вижу 1010 файлов, используемых этими процессами!
Чем больше баз данных клиентов я создаю, тем больше становится это число!Поэтому я думаю, что мое решение объединяет все базы данных в одну.Если я сделаю это, мне придется добавить столбец AccountId во все мои коллекции. Если я сделаю это изменение, какой индекс я должен назначить AccountId, чтобы мои поиски были эффективными? Например, я хотел бы получить все PurchaseOrders, где IdAccount = 34, быстро.Вы, ребята, рекомендуете выполнить это изменение?Должен ли я поместить все 50 баз данных в одну?
PS : На другом компьютере Linux я создал базу данных MongoDB только с 1 базой данных и 40 коллекциями.Я заполнил 40 сборников 6 ГБ данных (вдвое больше, чем сейчас).MongoDB использовал 200 файлов, хотя эта база данных в два раза больше!