Как решить, когда использовать копии наборов для mongodb в производстве - PullRequest
2 голосов
/ 09 января 2020

В настоящее время мы размещаем MongoDB, используя ее официальный образ docker в ec2, для нашей производственной среды - сервер памяти 32 ГБ, выделенный только для этой службы.

Как использование наборов реплик может помочь нам в улучшении в отношении производительности нашего MongoDB мы в настоящее время сталкиваемся с тем, что ответы на запросы становятся медленнее с каждым днем.

Существуют ли какие-либо меры, с помощью которых мы можем определить, что инвестирование в набор реплик также даст достойные преимущества и не будет преждевременной оптимизации.

Ответы [ 2 ]

0 голосов
/ 11 января 2020

Рекомендуется использовать набор реплик в производстве из-за функциональности HA.

Из-за ограничений источника с одной стороны и необходимости HA в производстве с другой стороны, я бы предложил вам создать минимальный набор реплик, который будет состоять из первичного, вторичного и арбитра ( Арбитр не содержит никаких данных и потребляет очень мало памяти.)

Кроме того, записи обычно влияют на производительность вашей памяти гораздо больше, чем чтения. Чтобы добиться лучшей производительности записи, я бы посоветовал вам создавать больше осколков (чем больше у вас мастеров, тем больше записей вы можете обрабатывать одновременно).

Однако я не уверен, в каком случае вы Производительность mon go замедляется так быстро. Я думаю, что вы должны:

  1. Проверить, что больше всего влияет на производительность вашей продукции (сложные запросы или жесткие записи).
  2. Измените предпочтения чтения на «ближайшие».
  3. Подумайте о том, чтобы отключить «Концентрацию для чтения» для «большинства» (помните, что по умолчанию существует проблема «для большинства» для записи. Члены должны быть в курсе).
  4. Проверьте лучший индекс.
  5. И проклятия создать набор реплик!

Удачи! : Р

0 голосов
/ 09 января 2020

Репликация MongoDB - это решение высокой доступности (см. Примечание в конце публикации для получения более подробной информации о репликации). Репликация не является решением для повышения производительности.

Производительность запросов MongoDB зависит от различных факторов: размера коллекции, размера документа, дизайна базы данных, определения запроса и индексов. Недостаточное оборудование (память, жесткий диск, процессор и сеть) может повлиять на производительность запроса. Количество операций в данный момент времени также может повлиять на производительность.

Для более быстрой обработки запросов основное внимание уделяется использованию индексов. Индексы напрямую влияют на фильтр запросов и операции сортировки. Чтобы определить, выполняется ли ваш запрос оптимально и с использованием правильных индексов, сгенерируйте план запроса , используя explain с режимом «executeStats»; изучить план. Объяснение может быть запущено в MongoDB для поиска, обновления, удаления и агрегирования запросов. Все эти запросы могут извлечь выгоду из индексов. См. Оптимизация запросов .

Добавление возможностей к существующему оборудованию называется вертикальным масштабированием; и репликация не является вертикальным масштабированием.


Репликация:

Это настроено как набор реплик - первичный узел и несколько вторичных узлов. Первичная является основной точкой контакта для приложения - все записи происходят на первичной (и считываются по умолчанию). Данные, записанные на первичный сервер, копируются на вторичный сервер. Таким образом достигается избыточность данных. Когда первичный сервер выходит из строя, один из вторичных серверов становится первичным и поддерживает работу системы через процесс восстановления после сбоя. Надежность данных, высокая доступность, избыточность и отказоустойчивость - основные понятия репликации. В MongoDB кластер с набором реплик может иметь до пятидесяти узлов.

...