Como soluciono problemas de alta pressão de memória de JVM no meu cluster do OpenSearch Service?

3 minuto de leitura
0

Meu cluster do Amazon OpenSearch Service tem alta pressão de memória de JVM e eu não sei como resolver isso.

Breve descrição

Por padrão, o OpenSearch Service usa 50% da RAM de uma instância para pilhas JVM de até 32 GB de tamanho. A pressão de memória de JVM especifica a porcentagem da pilha Java em um nó do cluster. As diretrizes a seguir indicam o que significam as porcentagens de pressão de memória de JVM:

  • Se a pressão de memória de JVM atingir 75%, o OpenSearch Service iniciará o coletor de resíduos Concurrent Mark Sweep (CMS) para tipos de instância x86 do Amazon Elastic Compute Cloud (Amazon EC2). Os tipos de instância Graviton Amazon EC2 baseados em ARM usam o coletor de resíduos Garbage-First (G1), que usa pausas curtas adicionais e desfragmentação de pilhas. A coleta de resíduos é um processo que exige muita CPU. Se o uso da memória continuar aumentando, você poderá encontrar ClusterBlockException, JVM OutOfMemoryError ou outros problemas de desempenho do cluster. Para obter mais informações, consulte Recuperação de uma carga contínua de processamento pesado.
  • Se a pressão de memória de JVM exceder 92% por 30 minutos, o OpenSearch Service bloqueará todas as operações de gravação.
  • Se a pressão de memória de JVM atingir 100%, JVM do OpenSearch Service será configurado para encerramento e, eventualmente, será reiniciado como OutOfMemory (OOM).

Os seguintes motivos podem causar alta pressão na memória de JVM:

  • Picos no número de solicitações ao cluster.
  • Agregações, curingas e seleção de amplos intervalos de tempo nas consultas.
  • Alocações de fragmentos desbalanceadas entre nós ou muitos fragmentos em um cluster.
  • Explosões de dados de campo ou de mapeamento de índices.
  • Tipos de instância que não conseguem lidar com cargas recebidas.

Resolução

Reduza o tráfego para o cluster para resolver problemas de alta pressão de memória de JVM. Para reduzir o tráfego para o cluster, siga estas práticas recomendadas:

  • Limpe o cache de dados de campo a operação de API POST /index_name/_cache/clear?fielddata=true.
    Observação: limpar o cache pode interromper as consultas em andamento.
  • Não agregue campos de texto nem altere o tipo de mapeamento para “palavra-chave”.
  • Ajuste a escala do domínio para que o tamanho máximo da pilha por nó seja 32 GB.
  • Ative logs lentos (site do OpenSearch) para determinar solicitações com defeito.
    Observação: verifique se a pressão da memória de JVM está abaixo de 90%. Para obter mais informações sobre consultas lentas do Elasticsearch, consulte Ajuste avançado: descobrir e corrigir consultas lentas do Elasticsearch no site do Elasticsearch.
  • Escolha o número correto de fragmentos para otimizar a pesquisa ou a indexação. Para obter mais informações sobre indexação e contagem de fragmentos, consulte Como rebalancear a distribuição desigual de fragmentos no meu cluster do Amazon OpenSearch Service?
  • Exclua índices antigos ou não utilizados para reduzir o número de fragmentos.
  • Usuários avançados podem atualizar a alocação do cache de dados do campo parent ou solicitar as configurações do disjuntor de acordo com seu caso de uso. Para obter mais informações sobre disjuntores JVM, consulte JVM OutOfMemoryError.

Para obter mais informações sobre como solucionar problemas de alta pressão de memória de JVM, consulte Por que meu nó do OpenSearch Service travou?

Informações relacionadas

Solução de problemas do Amazon OpenSearch Service

Como posso aumentar a escala horizontal ou verticalmente de um domínio do Amazon OpenSearch Service?

Comece a usar o Amazon Elasticsearch Service: quantos fragmentos são necessários?

AWS OFICIAL
AWS OFICIALAtualizada há um ano