Ошибка ограничения открытых файлов MongoDB во время восстановления базы данных

Я пытаюсь восстановить базу данных MongoDB в Ubuntu 16.04, но это не удается с ошибкой «errno: 24 Слишком много открытых файлов» («код»: 16818).

Я поднял "ulimit -n" до 1024000, перезапустил сервер, но все равно получаю ту же ошибку. Поднять выше не представляется возможным, и я застрял без идей. Пожалуйста помоги!


person Artico    schedule 11.08.2016    source источник
comment
Сколько у вас коллекций? MongoDB может вызвать эту ошибку, если вы используете механизм хранения WiredTiger со многими коллекциями. Вы пытаетесь восстановить первичный или вторичный экземпляр?   -  person Alex    schedule 11.08.2016
comment
Я использую механизм хранения MMAP и имею только один экземпляр. Всего около 10 коллекций, но одна из них довольно большая (общий размер файлов БД около 170 ГБ)   -  person Artico    schedule 13.08.2016


Ответы (1)


Мы столкнулись с подобной проблемой. Сначала убедитесь, что количество файловых дескрипторов, используемых процессом «mongod» при выполнении команды repairDatabase(). Вы можете проверить это с помощью «lsof -p mongod_pid». Также обратите внимание, если вы хотите изменить «максимальное количество процессов», вам необходимо отредактировать «/etc/security/limits.conf». ", добавив запись для процесса mongod.

Изменить: Также уже есть запрос функции для открытия файла для каждой базы данных, поскольку в настоящее время «wiredtiger» открывает один файл для каждой коллекции и один для индекса. Также следует серьезно изучить горизонтальное масштабирование путем сегментирования, если стоимость не является серьезной проблемой.

person user3526905    schedule 09.02.2018
comment
Спасибо за ваш ответ! Честно говоря, проблема довольно старая, и я даже не помню, как я ее тогда поборол... Так что я не могу сейчас проверить ваше решение, извините. - person Artico; 12.02.2018
comment
Я подумал, что это будет полезно для тех, кто может столкнуться с подобной проблемой в будущем. - person user3526905; 13.02.2018