Sobrecarga do Serviço de Monitoramento JVM GC: Causa Raiz e Recomendações

[post-views]
Dezembro 17, 2024 · 3 min de leitura
Sobrecarga do Serviço de Monitoramento JVM GC: Causa Raiz e Recomendações

Descrição do Problema

The Excesso do JvmGcMonitorService avisos indicam que a Máquina Virtual Java (JVM) está realizando a Coleta de Lixo (GC) da Geração Antiga. Durante este processo, a JVM pausa todas as outras atividades para recuperar memória, levando a potenciais interrupções como:

  • Falta de resposta dos nós do Elasticsearch a solicitações de cliente ou cluster.
  • Desconexões de nós, que podem causar instabilidade no cluster.
Esse comportamento é frequentemente desencadeado por:
  1. Uso Excessivo de Heap: Um número alto de consultas complexas ou excesso de shards alocados em relação ao tamanho de heap JVM configurado.
  2. Configuração Pobre de Recursos: Configurações JVM desalinhadas ou distribuições de shards.

Achados e Observações Iniciais

Como parte da sua investigação, considere:
  1. Tendências de Uso de Heap:
  • Inspecione o uso de heap JVM ao longo do tempo usando ferramentas de monitoramento (por exemplo, Stack Monitoring do Kibana ou métricas do _nodes/stats API).
  • Identifique períodos de saturação do heap ou pausas prolongadas de GC.
  1. Comando a usar:
  2. GET /_nodes/stats/jvm
  3. Alocação e Tamanho dos Shards:
  • Revise o número de shards por nó e seus tamanhos usando _cat/shards. Contagens excessivas de shards levam a um maior consumo de memória.
  1. Comando a usar:
  2. GET /_cat/shards?v
  3. Complexidade das Consultas:
  • Analise logs de consultas lentas ou monitore consultas frequentemente executadas. Agregações complexas ou buscas de caracteres curinga frequentemente sobrecarregam a memória JVM.
  1. Comando para habilitar logs lentos:
  2. # Adicionar ao elasticsearch.yml
  3. index.search.slowlog.threshold.query.warn: 10s
  4. index.search.slowlog.threshold.fetch.warn: 5s
  5. Padrões Incomuns:
  • Verifique por picos em taxas de indexação, pesquisa ou outras atividades anômalas durante incidentes de sobrecarga de GC.

Recomendações

Otimizar Configurações de Heap JVM:

  • Certifique-se de que o tamanho do heap esteja configurado adequadamente (50% da memória disponível, limitado a 30GB para prevenir a desativação de ponteiros de objetos comprimidos).
  • Habilite G1GC, que oferece melhor performance para heaps grandes e cenários de alta taxa de transferência.

Reduzir Contagem de Shards:

  • Combine índices pequenos ou use a Rollover API para gerenciar o crescimento do índice.
  • Objetive 20 shards por GB de memória de heap como uma diretriz geral.

Ajustar Consultas:

  • Reescreva consultas dispendiosas para melhorar a eficiência (por exemplo, evitar * ou ? em caracteres curinga).
  • Cacheie consultas frequentemente usadas usando o cache de consulta de pesquisa.

Implementar Monitoramento e Alertas:

  • Use as ferramentas de monitoramento do Elastic para criar alertas para uso alto de heap ou tempos de GC lentos.

Escalonar o Cluster:

  • Se as demandas de carga de trabalho estiverem consistentemente excedendo a capacidade, considere adicionar nós ao cluster para distribuir a carga.

Conclusão

A SOC Prime, como um parceiro MSP da Elastic, deve aproveitar sua expertise para analisar e resolver proativamente tais questões. A causa raiz frequentemente reside em desalinhamento de recursos do cluster com as demandas de carga de trabalho. Seguindo as estratégias delineadas, a estabilidade e desempenho do cluster podem ser significativamente melhorados.

Tabela de Conteúdos

Este artigo foi útil?

Curta e compartilhe com seus colegas.
Junte-se à plataforma Detection as Code da SOC Prime para melhorar a visibilidade das ameaças mais relevantes para o seu negócio. Para ajudá-lo a começar e obter valor imediato, agende uma reunião agora com os especialistas da SOC Prime.

Publicações Relacionadas