Elasticsearch Setează dimensiunea maximă a memoriei

Elasticsearch Seteaza Dimensiunea Maxima A Memoriei



„Memoria este o resursă esențială, dar limitată atunci când lucrați cu Elasticsearch. Acest lucru se datorează faptului că Lucene va folosi fiecare memorie disponibilă. Cu toate acestea, atunci când sunt configurate greșit, setările de memorie pot duce la performanțe scăzute și la o utilizare ineficientă a memoriei.”

În acest tutorial, vă vom arăta configurația maximă și minimă JVM Heap Size atunci când lucrați cu Elasticsearch.







Să începem.



Ce este o memorie Heap?

În contextul Elasticsearch, memoria heap se referă la cantitatea totală de memorie alocată mașinii virtuale Java într-un nod Elasticsearch.



Elasticsearch va seta implicit dimensiunea Heap JVM pe baza memoriei totale a sistemului de bază și a rolului nodului. Aceasta înseamnă că alocarea dimensiunii memoriei heap poate varia în funcție de faptul că este un nod master, date, ingest, data_cold etc.





Pentru majoritatea mediilor de producție, permiterea lui Elasticsearch să gestioneze dimensiunea heap este recomandată și mai mult decât suficientă.

NOTĂ : Dacă rulați Elasticsearch în Docker, memoria heap totală se bazează pe dimensiunea totală a containerului Docker și nu pe gazda Docker.



Configurarea dimensiunii heap minime și maxime

Pentru a configura dimensiunea minimă și maximă a heap-ului, putem folosi parametrii Xms și Xmx. Probiții Elasticsearch setează memoria maximă la cel mult 50% din memoria totală. Acest lucru se datorează faptului că, în afară de JVM Heap, Elasticsearch necesită mai multă memorie pentru alte operațiuni, cum ar fi cache-ul sistemului de fișiere, comunicarea în rețea etc. În mod similar, JVM-ul va folosi o secțiune din memoria rămasă de 50%.

În al doilea rând, nu setați valorile xms și xmx la mai mult decât pragul oops. Pentru o configurație sigură, limitați-o la 26 GB sau 30 GB pe unele sisteme.

Puteți verifica pragul în jurnalul Elasticsearch.

cat elasticsearch.log | grep „indicatori de obiect”

Ar trebui să vedeți o intrare așa cum se arată:

[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment    ] [debian11] dimensiune heap [1.9gb], pointeri de obiect obișnuiți comprimați [true]
[2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment    ] [debian11] dimensiune heap [1.9gb], pointeri de obiect obișnuiți comprimați [adevărat]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment    ] [debian11] dimensiune heap [1.9gb], pointeri de obiect obișnuiți comprimați [true]

De asemenea, puteți interoga API-ul de informații despre noduri pentru valorile xms și xmx:

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

Ar trebui să vedeți o ieșire așa cum se arată:

Setați dimensiunea minimă și maximă a heap-ului

Pentru a modifica valorile JVM Heap Size, trebuie să adăugați un fișier de configurare în directorul /etc/elasticsearch/jvm.options.d. Acest fișier ar trebui să se termine cu extensia .options.

De exemplu:

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

Editați fișierul

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

Adăugați dimensiunea de memorie heap minimă și maximă dorită.

De exemplu, intrarea de mai jos configurează dimensiunea minimă și maximă a heap-ului la 4 GB.

Salvați fișierul și reporniți serviciul Elasticsearch.

Concluzie

În acest tutorial, ați învățat Heap-ul JVM în contextul Elasticsearch, cum configurează Elasticsearch Heap-ul JVM și cum puteți modifica dimensiunea heap-ului.

Multumesc pentru lectura!!