In che modo è possibile risolvere i problemi di utilizzo elevato di memoria JVM nel mio cluster Amazon OpenSearch Service?

Ultimo aggiornamento: 23-07-2021

Il mio cluster Amazon OpenSearch Service (successore di Amazon Elasticsearch Service) presenta un'elevata pressione della memoria JVM. Cosa significano i diversi livelli di pressione della memoria JVM e come si riducono?

Risoluzione

La pressione della memoria JVM specifica la percentuale dell'heap Java in un nodo cluster. Le seguenti linee guida indicano il significato delle percentuali di pressione della memoria JVM:

  • Se la pressione della memoria JVM raggiunge il 75%, Amazon OpenSearch Service attiva il garbage collector CMS (Concurrent Mark Sweep). La garbage collection è un processo ad alta intensità di CPU. Se la pressione della memoria JVM rimane a questa percentuale per alcuni minuti, è possibile che si verifichino ClusterBlockException, JVM OutOfMemoryError o altri problemi di prestazioni del cluster.
  • 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 è configurato per uscire ed eventualmente riavviare su OutOfMemory (OOM).

L'elevata pressione della memoria JVM può essere causata dai seguenti motivi:

  • Picchi nel numero di richieste al cluster.
  • Aggregazioni, caratteri jolly e selezione di ampi intervalli di tempo nelle query.
  • Allocazioni di partizioni sbilanciate tra i nodi o troppi frammenti in un cluster.
  • Esplosioni di mappatura di dati sul campo o indice.
  • Tipi di istanza che non sono in grado di gestire i carichi in entrata.

È possibile risolvere i problemi di elevata pressione della memoria JVM riducendo il traffico verso il cluster. Per ridurre il traffico verso il cluster, attieniti alle seguenti 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.
  • Evita l'aggregazione sui campi di testo o le modifiche al tipo di mappatura a una parola chiave.
  • Ridimensiona il dominio (in modo che la dimensione massima dell'heap per nodo sia di 32 GB).
  • Abilita i registri lenti per scoprire le richieste difettose.
    Nota: verifica che la pressione della memoria JVM sia inferiore al 90%. Per ulteriori informazioni sulle query Elasticsearch lente, consulta Ottimizzazione avanzata: ricerca e correzione di query Elasticsearch lente sul sito Web Elasticsearch.
  • Ottimizza la ricerca o l'indicizzazione scegliendo il numero corretto di partizioni. Per ulteriori informazioni sull'indicizzazione e sul conteggio delle partizioni, consulta Introduzione ad Amazon OpenSearch Service: quante partizioni sono necessarie?
  • Riduci il numero di partizioni eliminando indici vecchi o inutilizzati.
  • Per gli utenti esperti, è possibile aggiornare i dati padre, i dati di campo o richiedere le impostazioni dell'interruttore automatico in base al caso d'uso. Per ulteriori informazioni sugli interruttori automatici JVM, consulta JVM OutOfMemoryError.

Per ulteriori informazioni su come risolvere i problemi relativi all'elevata pressione della memoria JVM, consulta Perché il nodo Amazon OpenSearch Service si blocca?