Ошибки PHP MongoDB при использовании автоматического переключения при сбое

У меня тяжелое время, пытаясь понять это. У меня есть 2 набора реплик сервера с одним арбитром, работающим рядом с текущим основным.

Когда я подключаю или выдаю запросы, я получаю прерывистые ошибки, которые варьируются от любого из следующих:

  • Не удалось определить мастер.
  • Не удалось подключиться к [put host here].
  • Нарушение исключенных труб.
  • MongoCursorExceptions.

Похоже, что они происходят чаще, чем дольше серверы. Через некоторое время никакие соединения не могут быть сделаны, и я получаю следующую ошибку при попытке войти в оболочку mongo:

MongoDB shell version: 1.8.1 connecting to: test Wed May 11 16:36:50 MessagingPort recv() errno:104 Connection reset by peer 127.0.0.1:27017 Wed May 11 16:36:50 SocketException: remote: error: 9001 socket exception [1] Wed May 11 16:36:50 DBClientCursor::init call() failed exception: DBClientBase::findOne: transport error: 127.0.0.1 query: { whatsmyuri: 1 } 

(BTW, с подробным (-vvvv) протоколированием, исключение сокета 9001, похоже, придумывает каждый выполняемый запрос).

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

Независимо от того, какую комбинацию параметров подключения я использовал, ничего не получилось. Когда я изменил оба веб-сервера для подключения к основной реплике, все начало работать. Нет ошибок. Нет автоматического переключения на резерв: (странно, что опция replicaSet все еще была установлена, что означает, что драйвер PHP по-прежнему должен определить, был ли тот, с которым он был подключен, мастер и если не подключился к нему, если так, ничего не делайте.

Это говорит мне, что проблема связана с драйвером PHP, где он пытается подключиться к мастеру после попытки определить, подключен ли он к мастеру или нет. Чтобы попытаться поддержать мою теорию, я сказал одному из серверов подключиться к вторичному серверу. Сразу же, я начал получать ошибки с этого сервера. Не тот сервер, который все еще подключен к основному. Вернитесь назад, никаких ошибок.

Может ли кто-нибудь пролить свет на это?

Моя настройка: – 2 webservers – Apache / PHP на обоих – MongoDB Replica-Set span для обоих – Вторичный на одном – Первичный и Арбитр на другом – MongoDB 1.8.1 – PHP Driver 1.1.4 – PHP 5.3.3 – Apache 2.2 .17 – RedHat 5.5 (Тиканга)

Solutions Collecting From Web of "Ошибки PHP MongoDB при использовании автоматического переключения при сбое"