Я успешно сконфигурировал свой набор реплик, но заметил медленную скорость чтения. У меня есть 2 сервера mongo и 1 арбитр в моем наборе реплик. Все работают на минимальной настройке Centos 6.3 (только база данных).
У меня также есть один экземпляр mongo на Windows server 2012.
Прежде чем я создал свой набор реплик, мой веб-сервер был на той же ОС, что и Mongo (этот экземпляр Windows). Производительность была хорошей, результаты были как
C # .NET 4.5 (IIS и Mongo на одной виртуальной машине) Чтение 2000 строк: ~ 250 мс при AvgObj 2600 байт
Теперь с моим набором реплик у меня очень низкая скорость чтения. Когда моя реплика доступа к веб-серверу установлена, я получаю такой результат, как
C # .NET 4.5 (раздельно, IIS и Mongo в реплике Centos) Чтение 2000 строк: ~ 2500 мс при AvgObj 2600 байт
Я попытался прочитать с моего единственного момента Mongo с удаленного IIS, и результат похож на
C # .NET 4.5 (разделенный, IIS и Single Mongo в Windows) Чтение 2000 строк: ~ 600 мс при AvgObj 2600 байт
Все серверы работают на одной физической машине с главным сервером Hyper-V.
Я использую последнюю версию C # MongoDB Driver 1.7. Из того, что я тестировал, на всех серверах mongo мой запрос выполняется за 10 мс.
Может ли кто-нибудь дать мне предложение, почему моя реплика, установленная на отдельных серверах Centos, имеет низкую производительность чтения?
Если вы попытаетесь читать напрямую из реплики без установки slaveok = true, реплика будет проксировать чтение от мастера и ретранслировать. Вероятно, это источник большей части вашей задержки. Дважды проверьте свой предпочтительный режим, чтобы убедиться, что вы устанавливаете тот, который разрешает чтение непосредственно с неосновных узлов.