Optimale JVM-Einstellungen für Cassandra
Ich habe ein 4-Knoten-cluster mit 16-Kern-CPU und 100 GB RAM auf jedem Feld (2 Knoten auf jeder rack).
Alle laufen mit Standard-JVM-Einstellungen von Cassandra (v2.1.4). Mit dieser Einstellung, jeder Knoten verwendet 13GB RAM und 30% CPU. Es ist ein schreiben schwere cluster mit gelegentlichen löscht oder aktualisiert.
Muss ich zu Stimmen das JVM-Einstellungen von Cassandra zu nutzen, um mehr Speicher? Was alles sollte ich suchen, um entsprechende Einstellungen vorzunehmen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem DataStax Tuning Von Java-Ressourcen doc hat tatsächlich einige ziemlich gute Ratschläge auf dieser:
Als verfügen Sie über 100 GB RAM auf Ihrem Computer, wenn Sie (in der Tat laufen unter der "Standard-JVM-Einstellungen") Ihrer JVM max heap-Größe sollte gedeckelt sein bei 8192M. Und tatsächlich, ich würde nicht davon abweichen, dass Sie, sofern Sie Probleme mit der garbage collection.
JVM Ressourcen für Cassandra kann festgelegt werden, in der
cassandra-env.sh
- Datei. Wenn Sie neugierig sind, schauen Sie sich den code fürcassandra-env.sh
und suchen für diecalculate_heap_sizes()
Methode. Das sollte Ihnen einen Einblick, wie Cassandra berechnet Ihre Standard-JVM-Einstellungen.Wenn Sie mit OpsCenter (und Sie sein sollte), fügen Sie ein Diagramm für "Heap Verwendet" und "Nicht-Heap Verwendet."
Diese können Sie ganz einfach überwachen Sie die JVM-heap-Verwendung, die für Ihren cluster. Eine andere Sache, die mir geholfen haben, zu schreiben, das ein bash-script, in dem ich im Grunde entführt die JVM Berechnungen von
cassandra-env.sh
. So kann ich es auf einer neuen Maschine, und sofort wissen, was meineMAX_HEAP_SIZE
undHEAP_NEWSIZE
werden:Update 20160212:
Auch sicher sein, check-out -Amy Tobey s 2.1 Cassandra Tuning Guide. Sie hat einige große Tipps, wie Sie Ihre cluster optimal läuft.
system_cpu_cores nicht richtig eingestellt ist. Bearbeitet das Recht ein zu führen.