MongoConnectionException - Keine Kandidatenserver gefunden

8

Ich entwickle eine PHP-Webanwendung, die ein MongoDB-Replicaset verwendet, um meine Daten zu speichern. Ich erhalte gelegentlich den folgenden Fehler:

  

Schwerwiegender Fehler: Nicht abgefangene Ausnahme 'MongoConnectionException' mit der Nachricht 'Keine Kandidatenserver gefunden'

Ich habe ein Mongo-Replikat mit 3 Mitgliedern und 1 Schiedsrichter.

%Vor%

Unten ist ein Beispiel für den Code, wo ich gelegentlich diesen Fehler erhalte.

%Vor%

Jeder hat eine Idee, was die Meldung "Keine Kandidatenserver gefunden" oder irgendwelche Vorschläge dazu, wie ich die Ursache des Problems ermitteln könnte, verursachen könnte?

Alle meine mongo.conf-Dateien verwenden die statische IP jedes Servers, keine Firewalls und DNS scheint korrekt in die .local-Domäne in meinem Netzwerk aufzulösen.

BEARBEITEN: Ich habe die Protokollierung hinzugefügt, die von Derick vorgeschlagen wurde, bevor ich MongoClient instanziiere.

%Vor%

Nach dem Aktivieren der Protokollierung habe ich die folgenden Hinweise erhalten.

%Vor%     
geekinit 30.01.2013, 01:25
quelle

1 Antwort

6

Ich würde vorschlagen, dass Sie Protokollierung hinzufügen, um herauszufinden, was passiert. Der Mongo-Treiber (seit Version 1.3) bietet eine ausführliche Protokollierung zum Debuggen von Verbindungsproblemen. Es gibt einen Artikel in Ссылка , um zu erklären, wie man ihn anschaltet. Wenn aus den Protokollinformationen nicht klar ist, was passiert, aktualisieren Sie Ihre Frage mit dem Protokoll, damit ich meine Antwort aktualisieren kann.

Im geposteten Protokoll kann ich sehen, dass Ihr Client keine Verbindung zu any der Startwerte aus Ihrer Verbindungszeichenfolge herstellen kann. Wenn Ihr Computer / Client keine Verbindung herstellen kann, können Sie natürlich nicht mit MongoDB sprechen. In diesem Fall kann es ein paar Möglichkeiten geben:

  • Der Treiber kann die Namen nicht in IP-Adressen konvertieren. In diesem Fall müssen Sie Ihr DNS-Setup korrigieren oder alle Hosts zu / etc / hosts
  • hinzufügen
  • Sie können sich wirklich nicht mit ihnen verbinden, dies könnte eine Firewall auf dem Weg sein.
  • In der Treiberserie 1.2 gibt es einige Probleme. Wenn Sie also noch nicht 1.3.4 oder höher verwenden, würde ich Ihnen ein Upgrade empfehlen. Es sollte eine viel reibungslosere Erfahrung sein.
  • Denken Sie daran, dass Sie die Mehrheit Ihrer Knoten benötigen, um schreiben zu können. Wenn Sie das nicht haben, erhalten Sie den Fehler "Keine Kandidatenserver".
Derick 30.01.2013, 11:57
quelle

Tags und Links