Должен ли каждый сервер в наборе реплик MongoDB иметь одинаковую ОЗУ? - PullRequest
7 голосов
/ 13 мая 2011

Можно ли настроить набор реплик в MongoDB 1.8, используя серверы с разным объемом оперативной памяти?

  • сервер1: 5 ГБ
  • сервер2: 2 ГБ
  • сервер3: 4 ГБ

Если да, каковы плюсы и минусы?

Ответы [ 2 ]

5 голосов
/ 13 мая 2011

Нет, вам не нужна одинаковая оперативная память.(Да, вы можете настроить набор реплик, как описано.)

MongoDB использует отображаемые в памяти файлы для всего кэширования, что означает, что подкачка кэша обрабатывается операционной системой.Реплики с большим объемом памяти будут хранить больше базы данных в памяти;те, у кого меньше, будут печатать больше на диске.

MongoDB в конечном итоге перенесет всю базу данных в память, если сможет.Если вы используете две реплики для чтения и одну для записи, вы можете использовать машины 5 ГБ и 4 ГБ для чтения, чтобы они с большей вероятностью работали с ОЗУ.

3 голосов
/ 14 мая 2011

Да, вы можете настроить реплику таким образом.

Если да, каковы плюсы и минусы?

Вот документ объяснение основных особенностей наборов реплик.Давайте рассмотрим их в свете различий в оперативной памяти.

Плюсы:

  • Чем больше компьютеров, тем лучше избыточность данных .Наличие по крайней мере 2 ГБ узла означает, что у вас есть еще одна копия данных.
  • Наличие целых 3 узлов в наборе реплик упрощает использование одного для обслуживания .

Минусы:

  • Наличие серверов разных размеров не подходит для автоматического переключения при сбое .Допустим, ваш сервер на 5 ГБ является основным.Что произойдет, когда он выйдет из строя и сервер 2ГБ победит на выборах?У вас все еще есть автоматический переход на другой ресурс, но ваша производительность, вероятно, резко упала.
  • Масштабирование чтения может работать не очень хорошо.В зависимости от ваших шаблонов чтения отправка операций чтения на сервер 2 ГБ может привести к большому количеству дополнительных обращений к диску и снижению производительности.

Итак, большая проблема здесь - это проблема производительности.Если вы просто делаете это для настройки dev, то это будет в основном работать.Но в процессе производства вы рискуете полностью прогнать свое приложение.Если ваше приложение привыкло жить на 4 ГБ + ОЗУ, а затем внезапно падает до 2 ГБ, оно может стать непригодным для использования.

Большинство производственных установок хотят переключиться на другой компьютер с «равным питанием».

...