Skip to content

Memória

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

Meu processo fica sem memória

Node.js (JavaScript) é uma linguagem com coleta de lixo, então ter vazamentos de memória é possível através de retentores. Como as aplicações Node.js são geralmente multi-inquilino, de importância crítica 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 uso de memória continuamente crescente (pode ser rápido ou lento, ao longo de dias ou até semanas), então vê o processo travando e reiniciando pelo gerenciador de processos. O processo pode estar rodando mais lento do que antes e os reinícios fazem com que algumas requisições falhem (balanceador de carga responde com 502).

Efeitos Colaterais

  • Reinícios do processo devido ao esgotamento da memória e requisições são descartadas
  • A atividade aumentada de GC leva a um maior uso da CPU e tempo de resposta mais lento
    • GC bloqueando o Event Loop causando lentidão
  • O aumento da troca de memória diminui a velocidade do processo (atividade de GC)
  • Pode não haver memória disponível suficiente para obter um Heap Snapshot

Meu processo utiliza a memória de forma ineficiente

Sintomas

A aplicação usa uma quantidade inesperada de memória e/ou observamos uma atividade elevada do coletor de lixo.

Efeitos Colaterais

  • Um número elevado de page faults
  • Maior atividade de GC e uso da CPU