„Paměť je nezbytným, ale omezeným zdrojem při práci s Elasticsearch. Je to proto, že Lucene využije každou dostupnou paměť. Při nesprávné konfiguraci však může nastavení paměti vést k nízkému výkonu a neefektivnímu využití paměti.“
V tomto tutoriálu vám ukážeme maximální a minimální konfiguraci JVM Heap Size při práci s Elasticsearch.
Začněme.
Co je to haldová paměť?
V kontextu Elasticsearch, Heap memory odkazuje na celkové množství paměti přidělené Java Virtual Machine v rámci Elasticsearch uzlu.
Elasticsearch standardně nastaví velikost haldy JVM na základě celkové paměti základního systému a role uzlu. To znamená, že alokace velikosti paměti haldy se může lišit v závislosti na tom, zda se jedná o hlavní uzel, data, ingest, data_cold atd.
Pro většinu produkčních prostředí je doporučeno a více než dostatečné umožnit Elasticsearch spravovat velikost haldy.
POZNÁMKA : Pokud v Dockeru spouštíte Elasticsearch, celková paměť haldy je založena na celkové velikosti kontejneru dockeru a ne na hostiteli Dockeru.
Konfigurace minimální a maximální velikosti haldy
Pro konfiguraci minimální a maximální velikosti haldy můžeme použít parametry Xms a Xmx. Elasticsearch probity nastavují maximální paměť na ne více než 50 % celkové paměti. Je to proto, že kromě JVM Heap vyžaduje Elasticsearch více paměti pro další operace, jako je mezipaměť souborového systému, síťová komunikace atd. Podobně JVM využije část zbývajících 50 % paměti.
Za druhé, nenastavujte hodnoty xms a xmx na více, než je práh chyb. Pro bezpečnou konfiguraci omezte na některých systémech na 26 GB nebo 30 GB.
Práh můžete zkontrolovat v protokolu Elasticsearch.
cat elasticsearch.log | grep 'ukazatele objektů'Měli byste vidět záznam takto:
[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment ] [debian11] velikost haldy [1,9 gb], komprimované ukazatele obyčejných objektů [true][2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment ] [debian11] velikost haldy [1,9 gb], komprimované ukazatele obyčejných objektů [true]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment ] [debian11] velikost haldy [1,9 gb], komprimované ukazatele obyčejných objektů [true]
Na hodnoty xms a xmx můžete také dotazovat rozhraní API pro informace o uzlech:
curl -X GET localhost:9200/_nodes/_all/jvm?prettyMěli byste vidět výstup takto:
Nastavte minimální a maximální velikost haldy
Chcete-li upravit hodnoty velikosti haldy JVM, musíte přidat konfigurační soubor do adresáře /etc/elasticsearch/jvm.options.d. Tento soubor by měl končit příponou .options.
Například:
$ sudo touch /etc/elasticsearch/jvm.options.d/heap.optionsUpravte soubor
$ sudo nano /etc/elasticsearch/jvm.options.d/heap.optionsPřidejte požadovanou minimální a maximální velikost paměti haldy.
Například níže uvedená položka konfiguruje minimální a maximální velikost haldy na 4 GB.
Uložte soubor a restartujte službu Elasticsearch.
Závěr
V tomto kurzu jste se naučili haldu JVM v kontextu Elasticsearch, jak Elasticsearch konfiguruje haldu JVM a jak můžete upravit velikost haldy.
Děkuji za přečtení!!