Назад | Перейти на главную страницу

Набор реплик MongoDB с задержкой репликации только на одном узле

мы наблюдаем странное поведение в нашем наборе реплик MongoDB, настройка 3 узлов (все процессоры Xeon Quad-Core-Class, 16 ГБ ОЗУ для одного, 24 ГБ для двух других узлов). Один узел с меньшим объемом ОЗУ обычно является вторичным с приоритетом 0, два других приоритета 1. Недавно мы испытали задержку репликации примерно на 60 секунд каждые 3-4 часа, само исчезновение через 2-3 минуты (Nagios Checks!)

У нас почти нет трафика на этих машинах, только некоторые базы данных размером 0,3 ГБ, а одна - 5 ГБ. И у нас есть одна коллекция, которая насчитывает около 65000 записей, но также мне бы индекс.

Странно то, что вторичный 16 Гб не имеет задержек, а только вторичный от двух больших машин. Я просто изменил его на первичный, чтобы увидеть, имеет ли старый первичный (теперь вторичный) такое же поведение.

Кто-нибудь знает, что можно сделать или проверить? Потому что мы понятия не имеем.

Я проверил загрузку и процессы этих машин, сетевое подключение и маршрутизацию, состояние дисков - все в порядке.

Несколько быстрых проверок:

  • Вы используете 2.0 или ниже? Репликация была капитально переработана в версии 2.2.
  • У вас есть закрытые коллекции? А отсутствующий индекс on _id в закрытой коллекции может вызвать такую ​​задержку
  • Вы упоминаете, что хосты не слишком заняты - если у вас есть пробелы в ваших новых операциях, математика, используемая для расчета задержки, может ложно сообщать о задержке, когда никаких операций не происходит.
  • Как вы рассчитываете отставание? Я бы определенно попытался подтвердить любое отставание от оболочки - последнее время операции из записей в rs.status() было бы хорошим началом
  • Двойная проверка со стороны сети, пики задержки и / или периодическая потеря пакетов могут вызвать это и быть достаточно кратковременным, чтобы его было трудно обнаружить (см. netstat --statistics например, до и после всплеска задержки - посмотрите, увеличиваются ли повторные передачи или ошибки)
  • Если вы используете 2.2, посмотрите, переключаете ли вы хост, с которого синхронизируется отстающий вторичный сервер, что несколько сбивает с толку [syncingTo][3] поле в rs.status(). Это делается с помощью rs.syncFrom() команда.
  • Если его еще нет, поместите набор в MMS и посмотрите, не появляется ли что-нибудь примерно в то же время, что и всплеск задержки, чтобы указать вам правильное направление.

Если после всего этого вы все еще не знаете, что вызывает это, то это может быть не только для ответа на сбой сервера разумным способом (нужно будет посмотреть журналы, статистику и т. Д.) - я бы порекомендовал пользователю mongodb Google группа в качестве следующего шага.