
Ich entwickle seit einiger Zeit lokal mit Cassandra und die Antwortzeiten auf Abfragen liegen im Bereich von 50 ms.
Ich habe einen 5-Knoten-EC2-Cluster aus der Cassandra-Community AMI eingerichtet, alles lief reibungslos, das Opscenter ist einsatzbereit und es gibt keine Probleme.
Wenn ich von einem Computer außerhalb des AWS-Netzwerks eine beliebige Abfrage durchführe, sei es zum Erstellen eines Schlüsselraums oder zum Ausführen eines „Select *“ auf einer leeren Tabelle, beträgt die Antwortzeit über 20 Sekunden.
Wenn ich eine Abfrage von einem Computer in der gleichen Region aus durchführe, beträgt die Antwortzeit zwischen 1 und 2 Sekunden und ist damit immer noch sehr langsam.
Die EC2-Maschinen sind alle m1.large eu-west-1a
Haben Sie eine Idee, warum dies passiert oder wo ich nach dem Problem suchen muss?
Antwort1
Die aktuelle Version von DevCenter wurde entwickelt, um als Hauptszenario die Ausführung (längerer) CQL-Skripte zu unterstützen (im Gegensatz zu einer interaktiven Konsole mit nacheinander ausgeführten Abfragen). DevCenter verwendet als zugrunde liegenden Connector den DataStax Java-Treiber für Cassandra.
Um sicherzustellen, dass es im oben genannten Szenario keine „Konflikte“ gibt, wird für jede Ausführung eine neue Sitzung erstellt. Wenn eine Sitzung initialisiert wird, führt der Treiber eine automatische Knotenerkennung durch, erstellt Verbindungspools usw. Im Grunde erledigt er eine Menge Vorbereitungsarbeit. Abhängig von der Latenz von Ihrem Client-Rechner zu den EC2-Knoten, der Größe des Clusters und auch der Konfiguration dieser Knoten (siehe Verbindungsanforderungen) kann diese Initialisierungsphase recht aufwändig sein.
Wie Sie sich vorstellen können, würde die für die Vorbereitung aufgewendete Zeit keinen großen Prozentsatz der Ausführung eines DDL-Skripts und einer angemessenen Größe von Einfügungen/Aktualisierungen darstellen. Aber für ein interaktives Szenario führt dies zu einem suboptimalen Verhalten (das Sie beschreiben).
Die nächste(n) Version(en) von DevCenter werden sich mit dem interaktiven Szenario befassen und es optimieren, damit das Benutzererlebnis Ihren Erwartungen entspricht. Und die Unterstützung dieses Szenarios steht ganz oben auf unserer Prioritätenliste.