Elasticsearch Ställ in Max minnesstorlek

Elasticsearch Stall In Max Minnesstorlek



'Minne är en viktig men begränsad resurs när man arbetar med Elasticsearch. Detta beror på att Lucene kommer att använda alla tillgängliga minne. Men när de är felkonfigurerade kan minnesinställningarna leda till låg prestanda och ineffektiv minnesanvändning.'

I den här handledningen kommer vi att visa dig den maximala och lägsta JVM Heap Size-konfigurationen när du arbetar med Elasticsearch.







Låt oss börja.



Vad är ett Heap Memory?

I samband med Elasticsearch avser Heap-minne den totala mängden minne som allokerats till Java Virtual Machine inom en Elasticsearch-nod.



Elasticsearch kommer som standard att ställa in JVM-högstorleken baserat på bassystemets totala minne och nodens roll. Detta innebär att tilldelningen av heapminnesstorleken kan variera beroende på om det är en masternod, data, ingest, data_cold, etc.





För de flesta produktionsmiljöer rekommenderas att låta Elasticsearch hantera högstorleken och det är mer än tillräckligt.

NOTERA : Om du kör Elasticsearch i Docker, baseras det totala heapminnet på den totala storleken på dockerbehållaren och inte Dockerns värd.



Konfigurera minsta och maximala högstorlek

För att konfigurera minsta och maximala högstorlek kan vi använda parametrarna Xms och Xmx. Elasticsearch probits ställer in det maximala minnet till högst 50 % av det totala minnet. Detta beror på att förutom JVM Heap kräver Elasticsearch mer minne för andra operationer som filsystemcache, nätverkskommunikation, etc. På samma sätt kommer JVM att använda en del av de återstående 50% minnet.

För det andra, ställ inte in xms- och xmx-värdena till mer än tröskeln för oops. För säker konfiguration, begränsa den till 26 GB eller 30 GB på vissa system.

Du kan kontrollera tröskeln i Elasticsearch-loggen.

cat elasticsearch.log | grep 'objektpekare'

Du bör se en post som visas:

[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment    ] [debian11] heapstorlek [1.9gb], komprimerade vanliga objektpekare [true]
[2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment    ] [debian11] heapstorlek [1.9gb], komprimerade vanliga objektpekare [true]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment    ] [debian11] heapstorlek [1.9gb], komprimerade vanliga objektpekare [true]

Du kan också fråga nodinformations-API:n för xms- och xmx-värdena:

curl -X GET localhost:9200/_nodes/_all/jvm?pretty

Du bör se en utdata som visas:

Ställ in minsta och maximala högstorlek

För att ändra värdena för JVM Heap Size måste du lägga till en konfigurationsfil i katalogen /etc/elasticsearch/jvm.options.d. Den här filen ska sluta med tillägget .options.

Till exempel:

$ sudo touch /etc/elasticsearch/jvm.options.d/heap.options

Redigera filen

$ sudo nano /etc/elasticsearch/jvm.options.d/heap.options

Lägg till önskad minsta och maximala minnesstorlek.

Till exempel konfigurerar posten nedan den lägsta och maximala högstorleken till 4 GB.

Spara filen och starta om Elasticsearch-tjänsten.

Slutsats

I den här handledningen lärde du dig JVM-högen i samband med Elasticsearch, hur Elasticsearch konfigurerar JVM-högen och hur du kan ändra storleken på högen.

Tack för att du läser!!