Salta al contenuto

Come posso risolvere il problema della pressione elevata della memoria JVM del mio cluster del Servizio OpenSearch?

4 minuti di lettura
0

Il mio cluster del Servizio OpenSearch di Amazon ha una pressione elevata della memoria Java Virtual Machine (JVM) e desidero ridurla.

Breve descrizione

Per impostazione predefinita, il Servizio OpenSearch utilizza il 50% della RAM di un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per heap JVM fino a 32 GiB. La pressione della memoria JVM specifica la percentuale dell'heap Java in un nodo del cluster.

Le seguenti situazioni possono causare una pressione elevata della memoria JVM:

  • Picchi nel numero di richieste al cluster
  • Aggregazioni, caratteri jolly e ampi intervalli di tempo nelle query
  • Allocazioni di shard non equilibrate tra i nodi o troppi shard in un cluster
  • Esplosioni di dati di campi o mappature di indici
  • Tipi di istanze Amazon EC2 che non riescono a gestire il carico in entrata

Risoluzione

Monitora i modelli nei dati

Per risolvere i problemi di pressione elevata della memoria JVM, riduci il traffico verso il cluster.

Esegui questo comando per ottenere statistiche a livello di nodo sul cluster e identificare i nodi che subiscono una pressione della memoria o un'eccessiva rimozione di oggetti inutili (garbage collection):

GET _nodes/stats/jvm

Per identificare meglio le richieste problematiche, attiva i log lenti. Per ulteriori informazioni, consulta Shard slow logs (Log lenti degli shard) sul sito web OpenSearch. Assicurati che la pressione della memoria JVM sia inferiore al 90%. Per ulteriori informazioni sulle query lente, consulta Advanced tuning: finding and fixing slow Elasticsearch queries (Impostazione avanzata: ricerca e correzione delle query Elasticsearch lente) sul sito web Elasticsearch.

Utilizza Amazon CloudWatch per monitorare l'utilizzo della memoria JVM e il comportamento della rimozione di oggetti inutili (garbage collection) nel tempo. Utilizza queste informazioni per rilevare i modelli e intervenire prima che si verifichi l'instabilità del cluster. Inoltre, configura allarmi in CloudWatch per rilevare e risolvere in modo proattivo la pressione elevata della memoria JVM.

Controlla le impostazioni della cache

Per cancellare la cache dei dati dei campi, esegui questa query:

POST /index_name/_cache/clear?fielddata=true

Nota: quando svuoti la cache, potresti interrompere le query in corso.

Se superi gli interruttori JVM e l'utilizzo della memoria rimane deselezionato, ricevi un errore JVM OutOfMemoryError. Per risolvere il problema, modifica l'allocazione della cache dei dati dei campi dell'interruttore principale o le impostazioni dell'interruttore di richiesta in base ai requisiti della configurazione. Per informazioni sulla modifica delle impostazioni a livello di cluster, consulta Cluster settings API (API Cluster settings) sul sito web OpenSearch.

Ottimizza la configurazione

Utilizza le seguenti best practice per ottimizzare la configurazione:

Per ulteriori informazioni sulla risoluzione del problema della pressione elevata della memoria JVM, consulta Perché il mio nodo del Servizio OpenSearch si è bloccato?

Comprendi gli effetti della pressione elevata della memoria JVM

Le situazioni seguenti mostrano come il Servizio OpenSearch gestisce diverse percentuali di pressione della memoria JVM:

  • Se la pressione della memoria JVM raggiunge il 75%, il Servizio OpenSearch avvia la rimozione di oggetti inutili (garbage collector) CMS (Concurrent Mark Sweep) per i tipi di istanze x86. I tipi di istanze Graviton basate su ARM applicano la rimozione di oggetti inutili (garbage collector) Garbage-First (G1), che utilizza brevi pause aggiuntive e deframmentazione dell'heap.
    Nota: la rimozione di oggetti inutili (garbage collection) è un processo che richiede un uso intensivo della CPU. Se l'utilizzo della memoria continua ad aumentare, potresti riscontrare errori "ClusterBlockException", "JVM OutOfMemoryError" o altri problemi di prestazioni del cluster.
  • Se la pressione della memoria JVM supera il 92% per 30 minuti, il Servizio OpenSearch blocca tutte le operazioni di scrittura.
  • Se la pressione della memoria JVM raggiunge il 100%, il Servizio OpenSearch si chiude e alla fine riavvia l'istanza con il messaggio di errore "OutOfMemory (OOM)".

Informazioni correlate

Risoluzione dei problemi con il Servizio OpenSearch di Amazon

Get Started with Amazon Elasticsearch Service: How Many Shards Do I Need? (Nozioni di base di Amazon Elasticsearch Service: quanti shard mi servono?)

AWS UFFICIALEAggiornata un anno fa