Время ожидания курсора MongoDB при выполнении большого количества операций записи - PullRequest
8 голосов
/ 09 мая 2011

У нас есть кластер из 2 наборов реплик, с 3 серверами на набор.С единственной коллекцией, подвергаемой осколкам.У нас также есть довольно много (8+) коллекций, которые мы используем ежедневно.Поскольку большая часть данных находится в изолированной коллекции с почти 100 миллионами записей в ней.

Недавно мы добавили требование получать в 100 раз больше данных, которые мы получали ранее, и нам нужно записать этов mongodb.Установлен демон для выполнения операций записи, необходимых для поддержания базы данных в актуальном состоянии.Сценарий выполняет со скоростью более 200 операций записи в секунду, при этом большинство из них направляется во все отдельные коллекции.

При таком количестве операций записи нам не удалось выполнить большое чтение в аналитических целях.Получение комбинации тайм-аутов курсора на стороне клиента и на стороне сервера («Курсор не найден»).

Мы попытались использовать схемы ограничения / пропуска при чтениях, но проблема сохраняется.Как лучше всего исправить это, поскольку нам требуется как большое количество записей, так и небольшое, но большое чтение?

1 Ответ

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

Как правило, в таком случае вы хотите начать поиск запросов, вызывающих время. Затем вы хотите посмотреть на оборудование, чтобы увидеть, что находится в состоянии стресса.

  1. Правильно ли проиндексированы эти запросы?
  2. Насколько велики индексы? Они вписываются в RAM?
  3. Можете ли вы предоставить некоторые сведения о том, где находятся узкие места?
  4. Вы заблокированы на IO?
  5. Ваши процессоры работают на полной скорости?

Кроме того, есть что-нибудь необычное в логах?

В основном нам нужно убедиться, что у вас есть: 1. Правильно построенная система для обработки запроса 2. Правильно подготовлена ​​система для обработки томов данных

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