Skip to content

Memória

Neste documento você pode aprender como depurar problemas relacionados à memória.

Meu processo fica sem memória

Node.js (JavaScript) é uma linguagem com garbage collection, portanto, vazamentos de memória são possíveis através de retentores. Como as aplicações Node.js geralmente são multi-tenant, críticas para os negócios e de longa duração, fornecer uma maneira acessível e eficiente de encontrar um vazamento de memória é essencial.

Sintomas

O usuário observa um aumento contínuo no uso de memória (pode ser rápido ou lento, ao longo de dias ou até semanas) e então vê o processo travando e reiniciando pelo gerenciador de processos. O processo pode estar funcionando mais lentamente do que antes e as reinicializações fazem com que algumas solicitações falhem (balanceador de carga responde com 502).

Efeitos colaterais

  • Reinicializações do processo devido ao esgotamento da memória e as solicitações são descartadas
  • O aumento da atividade do GC leva a um maior uso da CPU e tempo de resposta mais lento
    • GC bloqueando o Loop de Eventos causando lentidão
  • O aumento da troca de memória retarda o processo (atividade do GC)
  • Pode não haver memória disponível suficiente para obter um Snapshot de Heap

Meu processo utiliza a memória de forma ineficiente

Sintomas

O aplicativo usa uma quantidade inesperada de memória e/ou observamos uma atividade elevada do coletor de lixo.

Efeitos colaterais

  • Um número elevado de faltas de página
  • Maior atividade do GC e uso da CPU