Come posso risolvere l'elevata pressione della memoria JVM sul mio cluster di OpenSearch Service?

3 minuti di lettura
0

Il mio cluster Amazon OpenSearch Service presenta un'elevata pressione della memoria JVM e non so come risolvere il problema.

Breve descrizione

Per impostazione predefinita, OpenSearch Service utilizza il 50% della RAM di un'istanza per heap JVM di dimensioni fino a 32 GiB. La pressione della memoria JVM specifica la percentuale dell'heap Java in un nodo del cluster. Le seguenti linee guida indicano cosa significano le percentuali di pressione della memoria JVM:

  • Se la pressione della memoria JVM raggiunge il 75%, OpenSearch Service avvia il garbage collector Concurrent Mark Sweep (CMS) per i tipi di istanze x86 di Amazon Elastic Compute Cloud (Amazon EC2). I tipi di istanze Amazon EC2 Graviton basati su ARM utilizzano il garbage collector Garbage-First (G1), che utilizza brevi pause aggiuntive e la deframmentazione degli heap. La rimozione di oggetti inutili è un processo che richiede un uso intensivo della CPU. Se l'utilizzo della memoria continua ad aumentare, potresti riscontrare ClusterBlockException, JVM OutOfMemoryError o altri problemi di prestazioni del cluster. Per ulteriori informazioni, consulta Ripristino da un carico di elaborazione elevato e continuo.
  • Se la pressione della memoria JVM supera il 92% per 30 minuti, OpenSearch Service blocca tutte le operazioni di scrittura.
  • Se la pressione della memoria JVM raggiunge il 100%, OpenSearch Service JVM viene configurato per uscire ed eventualmente riavviarsi su OutOfMemory (OOM).

L'elevata pressione della memoria JVM può essere causata da:

  • Picchi nel numero di richieste al cluster.
  • Aggregazioni, caratteri jolly e selezione di ampi intervalli di tempo nelle query.
  • Assegnazioni di partizioni sbilanciate tra i nodi o numero eccessivo di partizioni in un cluster.
  • Esplosioni di dati sul campo o di mappature sugli indici.
  • Tipi di istanze che non sono in grado di gestire i carichi in entrata.

Soluzione

Riduci il traffico verso il cluster per risolvere i problemi di elevata pressione della memoria JVM. Per ridurre il traffico verso il cluster, segui queste best practice:

  • Cancella la cache dei dati del campo con l'operazione API POST /index_name/_cache/clear?fielddata=true.
    Nota: La cancellazione della cache può interrompere le query in corso.
  • Non aggregare campi di testo né modificare il tipo di mappatura in "parola chiave".
  • Dimensiona il dominio in modo che la dimensione massima dell'heap per nodo sia di 32 GB.
  • Attiva i log lenti (sito web OpenSearch) per determinare le richieste errate.
    Nota: Verifica che la pressione della memoria JVM sia inferiore al 90%. Per ulteriori informazioni sulle query lente di Elasticsearch, consulta Ottimizzazione avanzata: ricerca e correzione delle query lente di Elasticsearch sul sito web Elasticsearch.
  • Scegli il numero corretto di partizioni per ottimizzare la ricerca o l'indicizzazione. Per ulteriori informazioni sull'indicizzazione e sul numero di partizioni, consulta Come posso ribilanciare la distribuzione irregolare delle partizioni nel mio cluster Amazon OpenSearch Service?
  • Elimina gli indici vecchi o inutilizzati per ridurre il numero di partizioni.
  • Gli utenti esperti possono aggiornare l'assegnazione della cache dei dati del campo principale o richiedere le impostazioni degli interruttori automatici in base al proprio caso d'uso. Per ulteriori informazioni sugli interruttori automatici JVM, consulta JVM OutOfMemoryError.

Per ulteriori informazioni su come risolvere l'elevata pressione della memoria JVM, consulta Perché il nodo del mio servizio OpenSearch Service si è arrestato?

Informazioni correlate

Risoluzione dei problemi di Amazon OpenSearch Service

Come faccio ad ampliare o ridimensionare un dominio Amazon OpenSearch Service?

Inizia a usare Amazon Elasticsearch Service: Quante partizioni mi servono?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa