Ao implantar o Elasticsearch, você pode melhorar o desempenho e a estabilidade otimizando as configurações do sistema Linux. Aqui estão alguns métodos de otimização comuns:
1. Limite do descritor de arquivo
O Elasticsearch requer muitos descritores de arquivo para lidar com dados e conexões, portanto, certifique-se de ajustar o limite de descritor de arquivo do seu sistema. Os limites podem ser aumentados modificando o arquivo /etc/security/limits.conf, por exemplo:
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
2. Memória virtual
Desativar a troca de memória virtual pode melhorar o desempenho, evitando que o sistema use demais o disco. O arquivo /etc/sysctl.conf pode ser editado para desabilitar a troca da seguinte forma:
vm.swappiness=0
Use o comando sysctl -p para carregar as novas configurações.
3. Ajuste dos parâmetros do kernel
De acordo com os requisitos do Elasticsearch, os parâmetros do kernel podem ser ajustados para melhorar o desempenho, por exemplo:
vm.max_map_count=262144
Isso pode ser definido em /etc/sysctl.conf e então carregado usando o comando sysctl -p.
4. Desative Páginas Enormes Transparentes
Páginas muito grandes podem afetar o desempenho do Elasticsearch em alguns casos. Pode ser desativado com o seguinte comando:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
Essas configurações também podem ser definidas em scripts de inicialização.
5. Desative a ativação automática do THP
Adicionar a seguinte variável de ambiente ao seu script de inicialização garante que o THP não seja ativado automaticamente na reinicialização do sistema:
export ES_HEAP_NEWSIZE=1g
export ES_JAVA_OPTS="-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow"
export ES_USE_GC_LOGGING="true"
export ES_GC_LOGGING_OPTS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps"
export ES_PATH_CONF=/path/to/conf
export ES_HOME=/path/to/es
export ES_CLASSPATH=$ES_CLASSPATH:$ES_HOME/lib/sigar/*
export ES_HEAP_SIZE=8g
export ES_HEAP_NEWSIZE=2g
export ES_DIRECT_SIZE=2g
export ES_DIRECT_SIZE=1g
export ES_DIRECT_SIZE=512m
export ES_DIRECT_SIZE=256m
6. Otimize o sistema de arquivos
Use um sistema de arquivos moderno, como XFS ou EXT4, e certifique-se de que o sistema de arquivos esteja devidamente ajustado para sua carga de trabalho do Elasticsearch. Opções apropriadas, como noatime, podem ser usadas ao formatar o sistema de arquivos.
7. Configurações de segurança
Configure regras de firewall e grupo de segurança para permitir que apenas as portas e endereços IP necessários acessem o Elasticsearch. Isso ajuda a proteger o cluster contra acesso não autorizado.
8. Monitoramento e registro
Configure um sistema de monitoramento e registro adequado para que você possa monitorar o desempenho e a integridade do Elasticsearch em tempo real, encontrar problemas e fazer ajustes a tempo.
9. Manutenção regular
Realize regularmente tarefas de manutenção do Elasticsearch, como limpar dados expirados, otimizar índices etc., para manter a integridade do cluster.
Estas são algumas otimizações comuns e podem realmente variar dependendo da configuração do sistema, especificações de hardware e cargas de trabalho específicas. Antes de aplicar essas configurações, é recomendável ler a documentação oficial do Elasticsearch para obter as recomendações e configurações recomendadas mais recentes.