Labutin
@Labutin
Web-разработчик

Что покрутить в настройках MongoDB или самой ОС, чтобы быть готовым к всплеску инсертов?

Имеем MongoDB 2.4.9 (на 2.6 в продакшене пока не рискую переходить).

Примерно раз в час возникает задача быстро обновить около 20 миллионов записей. Делается это путем полного удаления старой коллекции (drop) и активного инсерта новых 20 миллионов записей. На это уходит примерно 10 минут. Суммарный объем дынных около 1 гигабайта.

На этом же сервере MongoDB имеется другая коллекция. В которую идет запись примерно 2-3 документа в секунду. И чтение около одного раза в секунду. Если в первую коллекцию сейчас не идет активной записи, то это чтение занимает не больше 0.01 секунды. А когда идет запись (в течении 10 минут), то скорость чтения ОЧЕНЬ сильно начинает скакать в диапазоне от 0.1 до 1 секунды.

Читал, что MongoDB раньше блокировала базу целиком при записи. Но в последних версиях от этой проблемы избавились. Вынесение коллекции, в которую идет активная запись, в другую базу не привело к улучшению картины.

Собственно вопрос - можно ли добиться того, чтобы чтение из других коллекций не страдало во время активной записи в эту злополучную коллекцию?
MongoDB крутится в виртуалке. Увеличение количества выделенных ядер не привело к улучшению ситуации. Оперативки выделено 8 гигов.
В какую сторону посоветуете посмотреть?
  • Вопрос задан
  • 2767 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lega
Увеличение количества выделенных ядер не привело к улучшению ситуации.
Потому что процесс упирается в io и блокировки в MongoDB при записи не причем.

Суммарный объем дынных около 1 гигабайта.
Оперативки выделено 8 гигов.
Запихайте всю коллекцию в RAM.

Примерно раз в час возникает задача быстро обновить около 20 миллионов записей.
Но я бы лучше в первую очередь пересмотрел алгоритм, почему drop/insert а не update?
Возможно вообще обновлять не нужно, а делать реалтайм "декорацию" данных при получении?
Расскажите подробнее про задачу.
Ответ написан
Комментировать
overmes
@overmes
Отключить журналирование, перейти на SSD
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы