Wie kann ich Probleme mit einem hohen JVM-Speicherdruck bei meinem Amazon-OpenSearch-Service-Cluster beheben?

Letzte Aktualisierung: 23.07.2021

Mein Amazon-OpenSearch-Service-Cluster (Nachfolger von Amazon Elasticsearch Service) weist einen hohen JVM-Speicherdruck auf. Was bedeuten die verschiedenen JVM-Speicherdruckpegel und wie reduziere ich sie?

Auflösung

Der JVM-Speicherdruck gibt den Prozentsatz des Java-Heaps in einem Clusterknoten an. Die folgenden Richtlinien geben an, was die Prozentsätze des JVM-Speicherdrucks bedeuten:

  • Wenn der JVM-Speicherdruck 75 % erreicht, löst Amazon OpenSearch Service den Concurrent-Mark-Sweep(CMS)-Garbage-Collector aus. Die Garbage Collection ist ein CPU-intensiver Prozess. Wenn der JVM-Speicherdruck einige Minuten lang bei diesem Prozentsatz bleibt, können ClusterBlockException, JVM OutOfMemoryError oder andere Clusterleistungsprobleme auftreten.
  • Wenn der JVM-Speicherdruck 30 Minuten lang 92 % überschreitet, blockiert OpenSearch Service alle Schreibvorgänge.
  • Wenn der JVM-Speicherdruck 100 % erreicht, ist OpenSearch Service JVM so konfiguriert, dass es bei OutOfMemory (OOM) beendet und neu gestartet wird.

Hoher JVM-Speicherdruck kann durch folgende Gründe verursacht werden:

  • Spitzen bei der Anzahl der Anfragen an den Cluster.
  • Aggregationen, Platzhalter und Auswahl großer Zeitbereiche in den Abfragen.
  • Unausgeglichene Shard-Zuweisungen über Knoten oder zu viele Shards in einem Cluster.
  • Felddaten- oder Index-Mapping-Explosionen.
  • Instance-Typen, die eingehende Lasten nicht verarbeiten können.

Sie können Probleme mit hohem JVM-Speicherdruck beheben, indem Sie den Datenverkehr zum Cluster reduzieren. Befolgen Sie diese Best Practices, um den Datenverkehr zum Cluster zu reduzieren:

  • Leeren Sie den Felddaten-Cache mit der API-Operation POST /index_name/_cache/clear?fielddata=true.
    Hinweis: Das Löschen des Cache kann laufende Abfragen stören.
  • Vermeiden Sie die Aggregation in Textfeldern oder ändern Sie den Zuordnungstyp in Schlüsselwort.
  • Skalieren Sie die Domäne (sodass die maximale Heap-Größe pro Knoten 32 GB beträgt).
  • Aktivieren Sie langsame Protokolle, um fehlerhafte Anfragen herauszufinden.
    Hinweis: Stellen Sie sicher, dass der JVM-Speicherdruck unter 90 % liegt. Weitere Informationen zu langsamen Elasticsearch-Abfragen finden Sie unter Fortgeschrittene Optimierung: Finden und Beheben langsamer Elasticsearch-Abfragen auf der Elasticsearch-Website.
  • Optimieren Sie die Suche oder Indexierung, indem Sie die richtige Anzahl von Shards auswählen. Weitere Informationen zur Indexierung und Shard-Anzahl finden Sie unter Erste Schritte mit Amazon OpenSearch Service: Wie viele Shards brauche ich?
  • Reduzieren Sie die Anzahl der Shards, indem Sie alte oder ungenutzte Indizes löschen.
  • Fortgeschrittene Benutzer können je nach Anwendungsfall die Circuit-Breaker-Einstellungen für parent, fielddata oder request aktualisieren. Weitere Informationen zu JVM-Circuit-Breakers finden Sie unter JVM OutOfMemoryError.

Weitere Informationen zur Behebung eines hohen JVM-Speicherdrucks finden Sie unter Warum ist mein Amazon-OpenSearch-Service-Knoten abgestürzt?


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?