Eu tenho um servidor Apache com uma configuração padrão de Elasticsearch e tudo funciona perfeitamente, exceto que a configuração padrão tem um tamanho máximo de 1 GB.
Não tenho um número tão grande de documentos para armazenar no Elasticsearch, então quero reduzir a memória.
Eu vi que tenho que mudar o -Xmx
parâmetro na configuração do Java, mas não sei como.
Eu vi que posso executar isso:
bin/ElasticSearch -Xmx=2G -Xms=2G
Mas quando eu tiver que reiniciar o Elasticsearch, isso será perdido.
É possível alterar o uso máximo de memória quando Elasticsearch é instalado como um serviço?
elasticsearch
Patxi1980
fonte
fonte
index.number_of_shards: 1 index.number_of_replicas: 0
Desta forma, você economiza memória e CPU por não fazer trabalho desnecessário .Respostas:
Em ElasticSearch> = 5, a documentação mudou , o que significa que nenhuma das respostas acima funcionou para mim.
Tentei mudar
ES_HEAP_SIZE
dentro/etc/default/elasticsearch
e dentroetc/init.d/elasticsearch
, mas quando executeips aux | grep elasticsearch
a saída ainda mostrava:/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram
Tive que fazer essas mudanças em:
/etc/elasticsearch/jvm.options
fonte
/usr/local/opt/elasticsearch/libexec/config/jvm.options
/usr/local/etc/elasticsearch/jvm.options
Atualizado em 24 de novembro de 2016 : Elasticsearch 5 aparentemente mudou a maneira de configurar o JVM. Veja esta resposta aqui . A resposta abaixo ainda se aplica às versões <5.
tirdadc, obrigado por apontar isso em seu comentário abaixo.
Eu tenho uma página pastebin que compartilho com outras pessoas quando me pergunto sobre memória e ES. Funcionou bem para mim: http://pastebin.com/mNUGQCLY . Vou colar o conteúdo aqui também:
Referências:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
Edite os arquivos a seguir para modificar os limites de memória e número de arquivos. Estas instruções presumem que o Ubuntu 10.04 pode funcionar em versões posteriores e outras distribuições / sistemas operacionais. ( Editar : isso também funciona para o Ubuntu 14.04.)
/etc/security/limits.conf :
/ etc / default / elasticsearch (no CentOS / RH: / etc / sysconfig / elasticsearch) :
/etc/elasticsearch/elasticsearch.yml :
fonte
/etc/default
em `/ etc / sysconfig '/etc/sysconfig/elasticsearch
é o local apropriado para fazer essas alterações. O RPM também fornece uma versão padrão desse arquivo./etc/security/limits.d/elasticsearch.conf
Para quem deseja fazer isso no Centos 7 ou com outro sistema executando o SystemD, você pode alterá-lo em
Remova o comentário da linha ES_HEAP_SIZE e defina um valor, por exemplo:
(Ignore o comentário sobre 1g no máximo - esse é o padrão)
fonte
Instruções para
ubuntu 14.04
:sudo vim /etc/init.d/elasticsearch
Conjunto
ES_HEAP_SIZE=512m
então em:
sudo vim /etc/elasticsearch/elasticsearch.yml
Conjunto:
bootstrap.memory_lock: true
Existem comentários nos arquivos para mais informações
fonte
As respostas anteriores foram insuficientes no meu caso, provavelmente porque estou no Debian 8, embora tenham sido encaminhadas para alguma distribuição anterior.
No Debian 8, modifique o script de serviço normalmente colocado em
/usr/lib/systemd/system/elasticsearch.service
e adicioneEnvironment=ES_HEAP_SIZE=8G
logo abaixo das outras linhas "Environment = *".Agora recarregue o script de serviço com
systemctl daemon-reload
e reinicie o serviço. O trabalho deve ser feito!fonte
/usr/
?Se você usar o wrapper de serviço fornecido no repositório Github do Elasticsearch, encontrado em https://github.com/elasticsearch/elasticsearch-servicewrapper , o arquivo conf em elasticsearch-servicewrapper / service / elasticsearch.conf controla as configurações de memória. No topo de elasticsearch.conf está um parâmetro:
Apenas reduza este parâmetro, digamos "set.default.ES_HEAP_SIZE = 512", para reduzir a memória alocada do Elasticsearch.
Observe que se você usar o elasticsearch-wrapper, o ES_HEAP_SIZE fornecido em elasticsearch.conf SUBSTITUI TODAS AS OUTRAS CONFIGURAÇÕES. Isso me levou um pouco para descobrir, já que a partir da documentação, parecia que a memória heap poderia ser configurada em elasticsearch.yml.
Se suas configurações de wrapper de serviço estiverem definidas em outro lugar, como em / etc / default / elasticsearch como no exemplo de James, defina ES_HEAP_SIZE lá.
fonte
export ES_HEAP_SIZE=1G; bin/elasticsearch -d
Se você instalou o ES usando os pacotes RPM / DEB fornecidos (como você parece ter feito), você pode ajustar isso editando o script init (
/etc/init.d/elasticsearch on RHEL/CentOS
). Se você der uma olhada no arquivo, verá um bloco com o seguinte:Para ajustar o tamanho, basta alterar a
ES_HEAP_SIZE
linha para o seguinte:(onde x é o número de MB / GB de RAM que você gostaria de alocar)
Exemplo:
Alocaria 1 GB.
Depois de editar o script, salve e saia e reinicie o serviço. Você pode verificar se ele foi configurado corretamente executando o seguinte:
E verificando os sinalizadores -Xms e -Xmx no processo java que retorna:
Espero que isto ajude :)
fonte
Não defina o Xmx acima do corte que a JVM usa para ponteiros de objetos compactados (ops compactados), o corte exato varia, mas está próximo a 32 GB.
Também é possível definir o tamanho do heap por meio de uma variável de ambiente
fonte
No diretório inicial do caminho do elasticsearch, ou seja
/usr/share/elasticsearch
, normalmente , há um arquivo de configuraçãobin/elasticsearch.in.sh
. Editar parâmetroES_MIN_MEM
,ES_MAX_MEM
neste arquivo para alterar-Xms2g
,-Xmx4g
respectivamente. E certifique-se de ter reiniciado o nó após esta mudança de configuração.fonte
Se você usar o Windows Server, poderá alterar a Variável de Ambiente, reiniciar o servidor para aplicar o novo Valor de Ambiente e iniciar o Elastic Service. Mais detalhes em Instalar Elastic no Windows Server
fonte
Em elasticsearch 2.x:
Vá para o bloco de código
Remova o comentário da última linha como
fonte