Назад | Перейти на главную страницу

Могу ли я ограничить количество файлов mongodb (2 ГБ каждый)?

Я вижу, что мой сервер mongodb создает такие файлы:

my_db.ns
my_db.1
my_db.2
my_db.3
my_db....
my_db.15

для некоторых из моих процессов mongod останавливается до 9, но иногда доходит до 13,14,15. а затем у меня возникла проблема с пространством на моем небольшом экземпляре AWS. Я не хочу увеличивать размер.

Я хотел бы сказать mongo (v2.6) не просматривать более 10 файлов, но не блокировать mongo при добавлении новых записей. Я хочу удалить самые старые данные или удалить пространство.

Я использовал это, чтобы попросить монго не создавать более 10 файлов.

quota=true
quotaFiles=8

но затем через некоторое время выполнения при вставке я получаю эту ошибку: MongoError: квота превышена

есть ли способ заставить mongo повторно использовать одни и те же файлы или не создавать новые, но без ошибок?

Спасибо

MongoDB добавит новые файлы, как только старые заполнятся. Если вы установите квоту, как вы упомянули, то, как только у вас закончится место, вместо выделения нового файла вы получите сообщение об ошибке. По сути, это два ваших варианта.

Вы можете использовать меньшие приращения пространства (но намного больше файлов), настроив smallFiles, и в этом случае каждый дополнительный файл будет иметь размер не более 512 МБ, но вам нужно будет разрешить в ~ 4 раза больше файлов в вашей квоте. В какой-то момент, если вы продолжите добавлять данные с жестким пределом (если вы точно не знаете, что не превысите лимит), вы столкнетесь с той же ошибкой.

Чтение между строками - это лучшее повторное использование пространства подсистемой хранения, эта тема обсуждалась много раз (см. Мой ответ по теме Вот). Вы можете найти лучшее использование с механизмом хранения WiredTiger, наряду с использованием сжатия (см. Мое тестирование этого Вот), но использование дискового пространства будет колебаться в зависимости от ваших шаблонов использования, и даже тогда вы захотите иметь некоторые накладные расходы с точки зрения места.