Direkt zum Inhalt

Wie behebe ich einen hohen JVM-Speicherdruck in meinem OpenSearch Service-Cluster?

Lesedauer: 3 Minute
0

Mein Amazon OpenSearch Service-Cluster hat einen hohen Speicherdruck für Java Virtual Machine (JVM) und ich möchte ihn reduzieren.

Kurzbeschreibung

Standardmäßig verwendet OpenSearch Service 50 % des Arbeitsspeichers einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance für JVM-Heaps bis zu 32 GiB. Der JVM-Speicherdruck gibt den Prozentsatz des Java-Heaps in einem Clusterknoten an.

Die folgenden Szenarien können zu einem hohen JVM-Speicherdruck führen:

  • Erhöhte Anzahl der Anforderungen an den Cluster
  • Aggregationen, Platzhalter und breite Zeitbereiche in den Abfragen
  • Unausgeglichene Shard-Zuweisungen zwischen Knoten oder zu viele Shards in einem Cluster
  • Explosionen bei Felddaten oder Indexzuordnungen
  • Amazon EC2-Instance-Typen, die eingehende Lasten nicht verwalten können

Lösung

Muster in deinen Daten überwachen

Reduziere den Datenverkehr zum Cluster, um Probleme mit hohem JVM-Speicherdruck zu lösen.

Führe den folgenden Befehl aus, um Statistiken über deinen Cluster auf Knotenebene abzurufen und Knoten zu identifizieren, bei denen Speicherauslastung oder übermäßige Speicherbereinigung auftreten:

GET _nodes/stats/jvm

Um fehlerhafte Anfragen weiter zu identifizieren, aktiviere langsame Protokolle. Weitere Informationen findest du unter Shard-Slow-Protokolle auf der OpenSearch-Website. Stelle sicher, dass der JVM-Speicherdruck unter 90 % liegt. Weitere Informationen zu langsamen Abfragen findest du auf der Elasticsearch-Website unter Erweiterte Optimierung: Finden und Beheben langsamer Elasticsearch-Abfragen.

Verwende Amazon CloudWatch, um die JVM-Speichernutzung und das Garbage Collection-Verhalten im Laufe der Zeit zu überwachen. Verwende diese Informationen, um Muster zu erkennen und Maßnahmen zu ergreifen, bevor eine Cluster-Instabilität auftritt. Konfiguriere außerdem CloudWatch-Alarme, um hohen JVM-Speicherdruck proaktiv zu erkennen und zu beheben.

Cache-Einstellungen überprüfen

Führe die folgende Abfrage aus, um den Felddaten-Cache zu löschen:

POST /index_name/_cache/clear?fielddata=true

Hinweis: Wenn du den Cache leerst, unterbrichst du möglicherweise gerade ausgeführte Abfragen.

Wenn du die Anzahl der JVM-Schutzschalter überschreitest und deine Speicherauslastung nicht überprüft wird, erhältst du einen JVM OutOfMemoryError. Um dieses Problem zu beheben, ändere die Daten-Cache-Zuweisung des übergeordneten Leistungsschalters oder die Einstellungen für den Anforderungsschalter entsprechend den Anforderungen deiner Konfiguration. Informationen zum Ändern dieser Einstellungen auf Cluster-Ebene findest du unter Cluster-Einstellungs-API auf der OpenSearch-Website.

Konfiguration optimieren

Verwende die folgenden bewährten Methoden, um die Konfiguration zu optimieren:

Weitere Informationen zum Beheben eines hohen JVM-Speicherdrucks findest du unter Warum ist mein OpenSearch Service-Knoten abgestürzt?

Auswirkungen eines hohen JVM-Speicherdrucks verstehen

Die folgenden Szenarien zeigen, wie OpenSearch Service verschiedene Prozentsätze für den JVM-Speicherdruck verwaltet:

  • Wenn die JVM-Speicherauslastung 75 % erreicht, initiiert OpenSearch Service den Concurrent Mark Sweep (CMS) Garbage Collector für x86 Instance-Typen. ARM-basierte Graviton G1-Instance-Typen verwenden den Garbage-First (G1)-Garbage-Collector, der zusätzliche kurze Pausen und Heap-Defragmentierung verwendet.
    Hinweis: Die Garbage Collection ist ein CPU-intensiver Prozess. Wenn die Speichernutzung weiter zunimmt, können „ClusterBlockException“, „JVM OutOfMemoryError“ oder andere Cluster-Leistungsprobleme auftreten.
  • Wenn der JVM-Speicherdruck 30 Minuten lang 92 % übersteigt, blockiert OpenSearch Service alle Schreibvorgänge.
  • Wenn der JVM-Speicherdruck 100 % erreicht, wird OpenSearch Service beendet und die Instance schließlich mit der Fehlermeldung „OutOfMemory (OOM)“ neu gestartet.

Ähnliche Informationen

Problembehandlung beim OpenSearch Service

Erste Schritte mit OpenSearch Service: Wie viele Shards benötige ich?

AWS OFFICIALAktualisiert vor 7 Monaten