Extrem langsame Resync-Rate von DRBD auf dediziertem Gigabit

7

Ich habe DRBD auf 2 Knoten eingerichtet und gestern damit begonnen. Nach ungefähr einer Stunde hatte es 50% der Partition neu synchronisiert. Weitere 12 Stunden vergingen und es sind bis zu 79% und es bewegt sich SEHR langsam.

Folgendes zeigt cat / proc / drbd:

 1: cs:SyncTarget ro:Primary/Secondary ds:Inconsistent/UpToDate C r-----
    ns:464931976 nr:191087032 dw:656013660 dr:214780588 al:100703 bm:21100 lo:7 pe:0 ua:0 ap:7 ep:1 wo:f oos:92241852
        [==============>.....] sync'ed: 79.2% (90076/431396)M
        finish: 76:13:38 speed: 332 (8,680) want: 19,480 K/sec

Ich habe mir den Netzwerkverkehr angesehen und verwende zwischen 1M und 20M auf einer 1G-Schnittstelle. Ich habe versucht, iperf auszuführen, während das alles läuft, und ich bekomme 930 Millionen Messwerte. Es wurde versucht, die Syncer-Rate ohne Erfolg auf 10M, 50M, 500M einzustellen. Optimierte Paketgröße auch ohne Glück.

Wie Sie aus dem Status ersehen können, besteht die Einschränkung darin, dass mein Primärknoten inkonsistent ist. Ich gehe also davon aus, dass das Betriebssystem während der Resynchronisierung im Wesentlichen mit einem sekundären Knoten arbeitet. Angesichts des geringen Durchsatzes verstehe ich jedoch nicht, warum die Synchronisierung nicht schneller ist.

Irgendwelche Ideen, was ich als nächstes versuchen kann? Das geschätzte Ende von 76 Stunden ist nichts, worauf ich mich freue :( Insbesondere wenn ich den Grund nicht kenne, kommt es zu einer Art Ausfall, ich würde nicht wissen, wie ich das Array schnell auf Konsistenz bringen kann.

Vielen Dank!

BEARBEITEN: Ich habe die folgenden Einstellungen im Netzbereich ohne Erfolg versucht:

sndbuf-size       512k;
max-buffers      20480;
max-epoch-size   16384;
unplug-watermark 20480;

EDIT 2: Ohne ersichtlichen Grund sprang die Geschwindigkeit auf 10 ~ 30M, nachdem ich aufgehört hatte, alle Konfigurationen zu optimieren. Bis zu 98,8% synchronisiert und auf ~ 300K zurückgefallen. Keine Nachrichten in den Protokollen auf keinem der Server. Zufälligerweise sehe ich einen Anstieg der INSERT-Aktivität in der MySQL-Datenbank, der von dieser Partition ausgeführt wird. Irgendwelche Ideen?

EDIT 3: Version: 8.4.2 (API: 1 / Proto: 86-101)

Sergey
quelle
1
Welche DRBD-Version (genau)? Haben Sie schwere Schreib-E / A auf der Primärseite?
Nils

Antworten:

3

Nach dem Kommentar von @Nils begann ich zu untersuchen, wie ausgelastet die Festplatten sind. Und bemerkte, dass ich viel mehr Lesevorgänge erhalte als vor der Neukonfiguration des Systems auf DRBD. Weitere Untersuchungen ergaben, dass die Festplattenauslastung nahezu 100% beträgt und die zu diesem Zeitpunkt ausgeführten Batch-Prozesse verlangsamt werden. Das Beheben der MySQL-Konfiguration zur Erhöhung der Pufferpoolgröße, um die meisten Lesevorgänge zu eliminieren, scheint das Problem behoben zu haben.

Das Problem war also, dass die Laufwerke so ausgelastet waren, dass sie nicht viel Resync-Arbeit erledigen konnten, die DRBD auf sie werfen wollte.

Sergey
quelle
Interessant, dass Read-IOs dasselbe tun könnten.
Nils
1

Versuchen Sie, eine Synchronisierungsrate zu erzwingen

drbdsetup /dev/drbd0 syncer -r 100M

Sie können dies auch nach dem Neustart über den Syncer {} in der Konfiguration einrichten

Mike
quelle
Versuchte das, half nicht. Und der richtige Befehl, glaube ich, istdrbdadm disk-options --resync-rate=<rate> <resource>
Sergey
0

Sie haben bereits die Ursache des Problems gefunden - schweres Lesen. Das Optimieren von sndbuf-sizehilft zwar bei starkem Schreibvorgang (erhöht jedoch die Asynchronität im Protokoll-A-Modus), rcvbuf-sizekönnte in Ihrem Fall hilfreich gewesen sein.

Die bessere Lösung bestand jedoch darin, die Wurzel Ihres Problems zu entfernen.

Weitere Lesevorgänge könnten auch mit dem DRBD-Meta-Gerät zusammenhängen (obwohl ich das auch in Schreibsituationen erwarten würde).

Nils
quelle