Elasticsearch Definir tamanho máximo de memória

Elasticsearch Definir Tamanho Maximo De Memoria



“A memória é um recurso essencial, mas limitado, ao trabalhar com o Elasticsearch. Isso ocorre porque o Lucene fará uso de todas as memórias disponíveis. No entanto, quando configuradas incorretamente, as configurações de memória podem levar a um baixo desempenho e uso ineficiente da memória.”

Neste tutorial, mostraremos a configuração máxima e mínima do tamanho de heap da JVM ao trabalhar com o Elasticsearch.







Vamos começar.



O que é uma Memória Heap?

No contexto do Elasticsearch, a memória Heap refere-se à quantidade total de memória alocada para a Java Virtual Machine em um nó do Elasticsearch.



O Elasticsearch definirá por padrão o tamanho do heap da JVM com base na memória total do sistema base e na função do nó. Isso significa que a alocação do tamanho da memória heap pode variar dependendo se é um nó mestre, dados, ingestão, data_cold, etc.





Para a maioria dos ambientes de produção, é recomendado e mais do que suficiente permitir que o Elasticsearch gerencie o tamanho do heap.

NOTA : Se você estiver executando o Elasticsearch no Docker, a memória heap total será baseada no tamanho total do contêiner do Docker e não no host do Docker.



Configurando o tamanho mínimo e máximo de heap

Para configurar o tamanho mínimo e máximo do heap, podemos usar os parâmetros Xms e Xmx. Os probits do Elasticsearch estão definindo a memória máxima para não mais que 50% da memória total. Isso ocorre porque, além do JVM Heap, o Elasticsearch requer mais memória para outras operações, como cache do sistema de arquivos, comunicação de rede, etc. Da mesma forma, a JVM usará uma seção dos 50% restantes de memória.

Em segundo lugar, não defina os valores xms e xmx para mais do que o limite dos oops. Para uma configuração segura, limite-o a 26 GB ou 30 GB em alguns sistemas.

Você pode verificar o limite no log do Elasticsearch.

gato elasticsearch.log | grep 'ponteiros de objeto'

Você deve ver uma entrada como mostrado:

[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment    ] [debian11] tamanho de heap [1.9gb], ponteiros de objetos comuns compactados [true]
[2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment    ] [debian11] tamanho de heap [1.9gb], ponteiros de objetos comuns compactados [true]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment    ] [debian11] heap size [1.9gb], ponteiros de objetos comuns compactados [true]

Você também pode consultar a API de informações de nós para os valores xms e xmx:

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

Você deve ver uma saída como mostrado:

Defina o tamanho mínimo e máximo de heap

Para modificar os valores do JVM Heap Size, é necessário incluir um arquivo de configuração no diretório /etc/elasticsearch/jvm.options.d. Este arquivo deve terminar com a extensão .options.

Por exemplo:

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

Edite o arquivo

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

Adicione o tamanho de memória de heap mínimo e máximo desejado.

Por exemplo, a entrada abaixo configura o tamanho de heap mínimo e máximo para 4 GB.

Salve o arquivo e reinicie o serviço Elasticsearch.

Conclusão

Neste tutorial, você aprendeu o JVM Heap no contexto do Elasticsearch, como o Elasticsearch configura o JVM Heap e como você pode modificar o tamanho do heap.

Obrigado por ler!!