Wie Sie verhindern, dass Cassandra commit-Protokolle Festplattenplatz
Bin ich mit einem zwei-Knoten-Datastax AMI-cluster über die AWS. Gestern, Cassandra begann die Verweigerung verbindungen aus alles. Die system-logs zeigte nichts an. Nach einer viel basteln, entdeckte ich, dass die commit-logs gefüllt hatte, bis alle der Speicherplatz auf der vorgesehenen Halterung und dies schien zu sein, wodurch die Verbindung Ablehnung (gelöscht einige der commit-Protokolle neu gestartet und war in der Lage sich zu verbinden).
Ich bin auf DataStax AMI 2.5.1 und Cassandra 2.1.7
Wenn ich entscheiden, zu wischen und neu starten, alles von Grund auf neu, wie Stelle ich sicher, dass dies nicht wieder passiert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, eine Senkung der
commitlog_total_space_in_mb
Einstellung Ihrercassandra.yaml
. Der Standardwert ist 8192MB für 64-bit-Systeme (es sollte kommentiert werden-in Ihrer.yaml
Datei... du musst un-Kommentar es beim Einstellung). Es ist normalerweise eine gute Idee zu planen, dass bei der Dimensionierung Ihrer Festplatte(N).Können Sie dies überprüfen, indem Sie ausführen eine
du
auf Ihre commitlog-Verzeichnis:Obwohl, ein kleiner commit-log-Raum verursachen häufigere Leerungen (erhöhte disk-I/O), so dass Sie wollen halten Sie ein Auge auf, das.
Bearbeiten 20190318
Hatte gerade eine Verwandte meinte (auf meine 4-jährige Antwort). Ich sah, dass er erhielt einige Aufmerksamkeit vor kurzem, und wollte sicherstellen, dass die richtigen Informationen dort.
Es ist wichtig zu beachten, dass manchmal die commit-Protokoll kann wachsen in einem "out-of-control" - Mode. Im wesentlichen, dies kann passieren, weil die schreiben, die Last auf den Knoten überschreitet, Cassandra-die Fähigkeit zu halten mit dem Spülen der memtables (und damit das entfernen von alten commitlog-Dateien). Wenn Sie einen Knoten mit Dutzenden von commitlog-Dateien, und die Anzahl scheint weiter zu wachsen, könnte dies Ihr Problem.
Wesentlichen, Ihre
memtable_cleanup_threshold
ist möglicherweise zu niedrig. Obwohl diese Eigenschaft ist veraltet, können Sie immer noch Steuern, wie es berechnet wird, durch eine Senkung der Anzahl dermemtable_flush_writers
.Die Dokumentation wurde aktualisiert, als der 3.x, sondern verwendet, um zu sagen:
...die (ich fühle mich) dazu geführt, dass viele Leute setzen dieses Wertes WEG zu hoch.
Vorausgesetzt, einen Wert von 8, die
memtable_cleanup_threshold
ist.111
. Wenn der Fußabdruck aller memtables übersteigt das Verhältnis von Gesamt-Speicher zur Verfügung, Spülung Auftritt. Zu viele flush (Blockierung) ist Schriftsteller können dies verhindern, zweckmässig. Mit einem einzigen/data
dir, ich empfehlen den Wert 2.Zusätzlich zur Verringerung der commitlog-Größe, wie vorgeschlagen, durch BryceAtNetwork23, eine richtige Lösung, um sicherzustellen, es wird nicht wieder vorkommen wird die überwachung der Festplatte einrichten, sodass Sie benachrichtigt werden, wenn die immer voller und die Zeit, zu handeln/erhöhen Sie die Größe der Festplatte.
Sehen, wie Sie mit Hilfe DataStax, können Sie eine Warnung für diese in OpsCenter. Nicht verwendet haben, diese in der cloud selbst, aber ich kann mir vorstellen das es funktionieren würde. Warnungen können eingestellt werden, indem Sie die Warnungen in der top-banner -> Benachrichtigungen Verwalten -> Alarm Hinzufügen. Konfigurieren Sie die Halterungen zu beobachten, und die auslöseschwellen auf.
Oder, ich bin sicher, es gibt bessere tools zum überwachen von Speicherplatz gibt.