Участник реплики Монго. Работает с +100 CPU

У меня есть стандартный набор реплик mongoDB с 3 участниками (в EC2) Все работает нормально, но время от времени у первичного процессора есть ЦП> 100. По моему мнению, этот экземпляр вреден для здоровья, поэтому набор реплик должен выбрать другой первичный сервер. Но это не происходит.

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

С Cloudwatch я могу установить событие (остановка / перезапуск экземпляра), когда срабатывает сигнал тревоги процессора, но я думаю, что это скорее обходной путь, чем решение.

Итак, когда mongodb считают участника нездоровым?

1 ответ

Решение

Это немного сложно, но, как правило, член набора реплик считается нездоровым, когда перестает отвечать на пульс набора реплик. Они отправляются каждые 2 секунды, и ответ ожидается в течение 10 секунд ( ссылка).

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

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

Наконец, нет необходимости закрывать экземпляр MongoDB или делать его нездоровым, если выбран новый основной выбор, вместо этого просто выполните команду rs.stepDown() Команда на первичном - он отметит себя не имеющим права на выборы, и будет выбран новый первичный.

Другие вопросы по тегам