2016-07-15 14 views
1

Ich verwende cassandra 2.1.12 auf einem Cluster von drei Maschinen mit jeweils 32 GB RAM und 4 Kern (auf Amazon AWS)Hohe Leselatenz in cassandra

verwende ich alle Standardkonfiguration von cassandra.

ich es für meine Website Ereignisanalyse verwenden (Zeitreihendaten) mit täglichen Daten von rund 1 GB einen replcation Faktor 3.

Meine Daten mit hat auf jede Maschine auf rund 85 GB gewachsen nun schenkt Lese-Latenz von etwa 4.5 s (4000 ms)

Meine Zeilen werden selten aktualisiert Also ich benutze LevelOrder Compaction nicht. Und meine schreibt eine gute Leistung mit Verzögerung von rund .03ms

Editiert:

Hier ist die Definition von ColumnFamily ist:

CREATE TABLE TimeSeriesData(
logyear int, 
logmonth int, 
logdate int, 
logdatetime timestamp, 
cookie text, 
sessionid text, 
... 
PRIMARY KEY (logyear, logmonth, logdate, logdatetime, cookie) 
) WITH CLUSTERING ORDER BY (logmonth ASC, logdate ASC, logdatetime ASC, cookie ASC) 
AND bloom_filter_fp_chance = 0.01 
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
AND comment = '' 
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} 
AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
AND dclocal_read_repair_chance = 0.1 
AND default_time_to_live = 0 
AND gc_grace_seconds = 864000 
AND max_index_interval = 2048 
AND memtable_flush_period_in_ms = 0 
AND min_index_interval = 128 
AND read_repair_chance = 0.0 
AND speculative_retry = '99.0PERCENTILE'; 

durch meine Partitionsschlüssel gehen, die derzeit logyear wird. Also, meine ganzen Daten würden in einer einzigen Partition sein. Allerdings muss der Partitionierer Gruppen von Zeilen (nach Partitionsschlüssel) über die Knoten im Cluster verteilen.

In diesem Fall wäre es ein einziger Knoten oder nicht?

Warum war die Latenz trotz Lesen der Daten von einer einzelnen Partition sehr schlecht?

Kann eine einzelne SSTable mehrere Partitionen enthalten und umgekehrt?

Ich verwende org.apache.cassandra.dht.RandomPartitioner.
Moverover, was sollte der Leerlauf Partition Schlüssel für Spaltenfamilie wie oben erwähnt mit einer inkrementellen Daten von 1 GB täglich.

+0

fügen Sie Konsistenzlevel und Tracing Dump hinzu. Es könnte anderen helfen –

+0

Ich habe weitere Details hinzugefügt. Könnten Sie sich das bitte anschauen? – deenbandhu

Antwort

3

Sie schreiben, was Sie glauben, ein einzelnes Problem zu sein, aber es ist wahrscheinlich viel komplizierter - möglicherweise viele verschiedene Probleme, die sich alle als hohe Latenz manifestieren.

Die wahrscheinlichste Erklärung ist eine hohe Speicherbereinigung aufgrund eines schlechten Datenmodells. Sie haben uns jedoch sehr wenig gegeben, um weiterzumachen.

Schauen Sie sich nodetool cfstats an - stimmen die Latenzen in cfstats mit den Latenzen überein, die Sie sehen? Wie groß ist die maximale Partitionsgröße?

+0

Wenn es ein Problem der hohen Müllsammlung ist, dann denke ich, dass mein Schreiben auch betroffen wäre, aber sie sind es nicht. – deenbandhu

+0

meine cf Statistiken jetzt Leselatenz von etwa 23.481 ms zeigt \t \t Verdichtete Partition mindestens Bytes: 43388629 \t \t Verdichtete Partition maximal Bytes: 158683580810 \t \t Verdichtete Partition bedeuten Bytes: 19049359054 – deenbandhu

+2

Sie haben ein gebrochenes Datenmodell - diese Partitionsgrößen sind nicht vernünftig, und ehrlich gesagt, ich bin schockiert, dass Sie überhaupt etwas lesen können. –