Я использую довольно стандартную версию MongoDB (3.0.5) с 1 начальным и 2 вторичными. Мое предпочтение чтения PHP-приложений является первичным, поэтому никаких чтений не происходит на вторичных серверах - они предназначены только для перехода на другой ресурс. Я запускаю тест нагрузки в своем приложении, который создает около 600 запросов/обновлений в секунду. Все операции выполняются против коллекции, содержащей ~ 500 000 документов. Однако запросы оптимизируются и поддерживаются индексами. Любой запрос не займет больше 40 мс.MongoDB Replica Set CPU load
Моя проблема заключается в том, что я получаю довольно высокую нагрузку на процессор на всех трех узлах (200% - 300%) - иногда нагрузка на вторичные устройства даже выше, чем на первичной. Использование дискового ввода-вывода и RAM, похоже, все в порядке - по крайней мере, они не нажимают никаких ограничений.
Файл журнала первичного пользователя содержит огромное количество запросов getmore oplog - я бы предположил, что любая операция на первичной основе создает запрос oplog. Мне кажется, что это слишком много накладных расходов, но у меня нет опыта работы с MongoDB под нагрузкой, и у меня нет никаких показателей.
Поскольку установка должна выдерживать еще большую нагрузку на производство, мой вопрос заключается в том, следует ли ожидать накладные расходы на репликацию и нормально ли, что загрузка ЦП повышается, даже на вторичных устройствах, или есть что-то такое Не хватает?