MongoDB Sharding на одной машине - PullRequest
       2

MongoDB Sharding на одной машине

2 голосов
/ 09 февраля 2012

Имеет ли смысл применять сегментирование mongodb, скажем, с использованием 100 сегментов на одной более мощной машине, просто для достижения более высокой скорости одновременной записи в базу данных, как мне сказали, существует глобальная блокировка для каждого процесса monogod.exe?Предполагая, что это возможно, этот подход даст мне более высокий параллелизм записи?

Ответы [ 4 ]

9 голосов
/ 09 февраля 2012

Запуск нескольких mongods на машине не очень хорошая идея. Каждый из процессов mongod будет пытаться использовать всю доступную память, вытесняя из памяти отображенные страницы памяти других mongod. В большинстве случаев это приведет к огромному обмену.

Глобальная блокировка базы данных, как правило, не является проблемой, как показано в: http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html

Используйте только один mongod для каждой машины (но можно также добавить mongos или сервер конфигурации), если только это не для простого тестирования.

ура, Дерик

2 голосов
/ 22 апреля 2014

Я совершенно не согласен. В нашей настройке мы используем 8 осколков на коробку. Он состоит из двух головных узлов, каждый с двумя другими машинами для репликации. Всего 6 коробок. Это мощные боксы с около 120 ГБ ОЗУ, 32 ядрами и 2 ТБ каждый. Имея 8 осколков на коробку (мы могли бы подняться выше, если установить значение 8 для исторических целей), мы обеспечиваем эффективное использование процессора. RAM разбирается. Вы должны следить за показателями и убедиться, что вы не слишком много пользуетесь страничками, но с SSD-дисками (которые есть у нас), если вы проливаете на дисководы, это не так уж плохо.

1 голос
/ 10 февраля 2012

Единственным случаем использования, когда я обнаружил, что несколько монгод работают на одном сервере, было увеличение скорости репликации при подключении с высокой задержкой.

Как подчеркнул Дерик, блокировка записи на самом деле не является вашей проблемой при запуске mongodb.

Чтобы ответить на ваш вопрос: да вы можете продемонстрировать масштабирование Монго с несколькими экземплярами на машину (достаточно 4 экземпляров на сервер), если ваш тест не содержит слишком много данных (в противном случае страница будет резко ухудши свою производительность, я уже проверил)

Однако экземпляры по-прежнему будут конкурировать за ресурсы. Все, что вам удастся сделать, это перенести проблему блокировки базы данных на проблему блокировки ресурсов.

0 голосов
/ 24 сентября 2015

Да, вы можете, и на самом деле это то, что мы делаем для базы данных с интенсивностью записи более 50 миллионов. Просто убедитесь, что все ваши индексы на mongod вписаны в оперативную память и есть место для роста и обслуживания.

Однако есть небольшой компромисс: в зависимости от того, какова ваша целевая QPS, этот вид совместного использования требует машин с большей мощностью, тогда как шардинг на одной машине не будет, и в большинстве случаев вы можете покончить с товаром, дешевле аппаратное обеспечение.

Как бы то ни было, проведите серию тестов производительности (ageinst IO, Network, PQS и т. Д.), Тщательно определите базовый уровень и рассмотрите возможность использования SSD-накопителей для хранения, и это может показаться предвзятым, но Linux XFS-хранилище также стоит рассмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...