2017-10-02 6 views
0

Ich habe eine Zwei-Knoten-Cassandra-Cluster, mit RF von 2. So enthalten beide Knoten 100% der Daten.Cassandra, alte, nicht benötigte Daten entfernen

Jetzt ist der Speicherplatz knapp. Ich kann einige alte Daten entfernen, da sie zuvor aggregiert und verarbeitet wurden, und ich brauche sie nicht mehr.

Ich habe versucht, eine delete Abfrage von cqlsh ausgeführt, aber ich bekomme eine Zeitüberschreitung. Ich habe versucht, Timeouts zu erhöhen, aber es scheint, dass das Ausführen einer Abfrage von cqlsh viel mehr Zeit braucht.

Wie kann ich diese Zeitüberschreitung für eine einzelne Abfrage oder Verbindung deaktivieren? Gibt es neben der Verlängerung des Zeitlimits noch eine andere Möglichkeit, einige Daten von einem Knoten zu entfernen?

Meine Cassandra-Version ist 3.11.0.

PS. Ich erhöhe write_request_timeout_in_ms in cassandra.yaml. Ist das der richtige für delete Anfragen?

Antwort

0

Löschen sollte wirklich nicht Timeout, es sei denn, es gibt ein Problem mit etwas anderem. Es fügt einen Grabstein ohne Lesevorgänge oder irgendetwas ein und sollte schnell/billig sein, unabhängig davon, was bereits existiert. Lesen auf der anderen Seite kann viel beeinflusst werden. Ich würde vermuten, GC verwandte Probleme im Zusammenhang mit liest. Sie könnten GC-Protokolle überprüfen und möglicherweise den Heap erhöhen und CMSInitiatingOccupancyFraction reduzieren (wenn Sie cms und nicht g1 verwenden).

Überprüfen Sie daher GC und normale Protokolle auf Probleme (suchen Sie nach WARN, ERROR im Systemprotokoll) und zu Pausenzeiten in GC-Logs> 1 Sekunde, sollte es keine geben.

Nach dem Löschen können Sie versuchen, eine Force-Komprimierung (nodetool compact keyspace table) zu machen, um zu sehen, ob es Festplattenspeicher hilft. Das Löschen selbst wird den Speicherplatz nicht reduzieren, bis die Daten mit dem Tombstone komprimiert wurden.

write_request_timeout_in_ms ist die richtige Einstellung, aber wenn Sie es trifft etwas falsch ist und Sie nur maskieren. Es sollte wirklich weniger als 1 Millisekunde normalen Gebrauch dauern.

Randbemerkung: RF = 2 auf einem 2-Knoten-Cluster ist nicht so, wie C * ausgeführt werden soll. Sie haben keine Verfügbarkeit in einer Datenbank, die Konsistenz für hohe Verfügbarkeit opfert.

Verwandte Themen