2016-05-26 4 views
2

Wir haben eine mongodb Replik-Setup mit zwei Mitgliedern und einen Schiedsrichter:Mongoid Failover, wenn sekundäre oder primäre mal aus

  • DB1 - Primäre
  • db2 - Secondary
  • Schiedsrichter

Gestern db2 blieb für einige Stunden in einem merkwürdigen Zustand stecken. Während dieser Zeit versuchte Mongoid ständig, sich mit der PV zu verbinden. Das primäre reagierte jedoch nicht, es timed out.

Das Problem ist, dass es dauert 5s bis Timeout, so 5s von jedem 10s die Anwendung wird durch diese Anfrage blockiert, so dass keine Datenbank schreibt/liest durchgeführt werden kann. Dies verlangsamte die Datenbank bis zu dem Punkt, an dem sie nicht funktionierte.

Wir verwenden Mongoid 4 und versuchen herauszufinden, was wir tun können, um eine anständige Failover-Antwort zu erhalten, wenn ein Server ausfällt.

Unsere mongoid.yml ist otions sind wie folgt:

options: 
    write: {w: 1} 
    read: :primary_preferred 
    pool_size: 32 
    pool_timeout: 5 

Ich nehme an, es für die Server auf den Satz zurückkehr überprüfen können die anderen db-Werte, ohne zu blockieren.

Irgendwelche Ideen, was oder warum das passiert ?, oder Möglichkeiten, um das Verhalten zu verbessern?

+0

Haben Sie ein Upgrade auf Mongoid 5 durchgeführt? Hast du das Problem gelöst? – kirhgoff

Antwort

0

Die beste Lösung, die wir gefunden haben, war ein Upgrade auf Mongoid5. Mongoid 5 gibt mehr Fail-Over-Optionen.

Verwandte Themen