Elasticsearch Legt die maximale Speichergröße fest

Elasticsearch Legt Die Maximale Speichergrosse Fest



„Arbeitsspeicher ist eine wesentliche, aber begrenzte Ressource bei der Arbeit mit Elasticsearch. Dies liegt daran, dass Lucene jeden verfügbaren Speicher nutzt. Wenn die Speichereinstellungen jedoch falsch konfiguriert sind, können sie zu geringer Leistung und ineffizienter Speichernutzung führen.“

In diesem Tutorial zeigen wir Ihnen die maximale und minimale Konfiguration der JVM-Heap-Größe bei der Arbeit mit Elasticsearch.







Lass uns anfangen.



Was ist ein Heap-Speicher?

Im Kontext von Elasticsearch bezieht sich Heap-Speicher auf die Gesamtmenge an Speicher, die der Java Virtual Machine innerhalb eines Elasticsearch-Knotens zugewiesen ist.



Elasticsearch legt die JVM-Heap-Größe standardmäßig basierend auf dem Gesamtspeicher des Basissystems und der Rolle des Knotens fest. Das bedeutet, dass die Zuweisung der Heap-Speichergröße variieren kann, je nachdem, ob es sich um einen Master-Knoten, Daten, Ingest, Data_cold usw. handelt.





Für die meisten Produktionsumgebungen wird es empfohlen und ist mehr als ausreichend, Elasticsearch die Verwaltung der Heap-Größe zu überlassen.

HINWEIS : Wenn Sie Elasticsearch in Docker ausführen, basiert der gesamte Heap-Speicher auf der Gesamtgröße des Docker-Containers und nicht auf dem Docker-Host.



Konfigurieren der minimalen und maximalen Heap-Größe

Um die minimale und maximale Heap-Größe zu konfigurieren, können wir die Parameter Xms und Xmx verwenden. Elasticsearch Probits setzen den maximalen Arbeitsspeicher auf nicht mehr als 50 % des Gesamtspeichers. Dies liegt daran, dass Elasticsearch neben JVM Heap mehr Speicher für andere Vorgänge wie Dateisystem-Cache, Netzwerkkommunikation usw. benötigt. Ebenso verwendet die JVM einen Teil der verbleibenden 50 % des Speichers.

Zweitens: Setzen Sie die xms- und xmx-Werte nicht auf mehr als den Schwellenwert der oops. Für eine sichere Konfiguration begrenzen Sie es auf einigen Systemen auf 26 GB oder 30 GB.

Sie können den Schwellenwert im Elasticsearch-Protokoll überprüfen.

cat elasticsearch.log | grep 'Objektzeiger'

Sie sollten einen Eintrag wie abgebildet sehen:

[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment    ] [debian11] Heap-Größe [1,9 GB], komprimierte gewöhnliche Objektzeiger [true]
[2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment    ] [debian11] Heap-Größe [1,9 GB], komprimierte gewöhnliche Objektzeiger [true]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment    ] [debian11] Heap-Größe [1,9 GB], komprimierte gewöhnliche Objektzeiger [true]

Sie können auch die Knoteninformations-API nach den xms- und xmx-Werten abfragen:

curl -X GET localhost:9200/_nodes/_all/jvm?hübsch

Sie sollten eine Ausgabe wie gezeigt sehen:

Legen Sie die minimale und maximale Heap-Größe fest

Um die Werte der JVM-Heap-Größe zu ändern, müssen Sie eine Konfigurationsdatei im Verzeichnis /etc/elasticsearch/jvm.options.d hinzufügen. Diese Datei sollte mit der Erweiterung .options enden.

Zum Beispiel:

$ sudo touch /etc/elasticsearch/jvm.options.d/heap.options

Bearbeiten Sie die Datei

$ sudo nano /etc/elasticsearch/jvm.options.d/heap.options

Fügen Sie die gewünschte minimale und maximale Heap-Speichergröße hinzu.

Der folgende Eintrag konfiguriert beispielsweise die minimale und maximale Heap-Größe auf 4 GB.

Speichern Sie die Datei und starten Sie den Elasticsearch-Dienst neu.

Fazit

In diesem Tutorial haben Sie den JVM-Heap im Kontext von Elasticsearch gelernt, wie Elasticsearch den JVM-Heap konfiguriert und wie Sie die Heap-Größe ändern können.

Danke fürs Lesen!!