Entender quanto de memória sua aplicação Node.js consome é essencial para otimizar o desempenho e prevenir vazamentos de memória. O Node.js fornece ferramentas integradas para verificar o uso de memória programaticamente, e também existem ferramentas externas para monitoramento em tempo real.
1. Usando process.memoryUsage()
O método process.memoryUsage() no Node.js fornece informações detalhadas sobre o consumo de memória do processo atual. Aqui está um exemplo básico:
console.log('Uso de memória:', process.memoryUsage());
Isso irá gerar um objeto com os seguintes campos:
- rss: Resident Set Size – memória total usada pelo processo, incluindo código, dados e memória alocada.
- heapTotal: Memória total alocada para o heap do JavaScript.
- heapUsed: Memória atualmente usada por objetos JavaScript.
- external: Memória usada por objetos C++ vinculados ao Node.js.
Um exemplo de saída:
{
"rss": 33157120,
"heapTotal": 7385088,
"heapUsed": 4812560,
"external": 8272
}
2. Formatando o Uso de Memória para Melhor Leitura
Para tornar a saída mais amigável ao usuário, você pode formatar os valores em megabytes:
function formatMemoryUsage(memory) {
return {
rss: `${(memory.rss / 1024 / 1024).toFixed(2)} MB`,
heapTotal: `${(memory.heapTotal / 1024 / 1024).toFixed(2)} MB`,
heapUsed: `${(memory.heapUsed / 1024 / 1024).toFixed(2)} MB`,
external: `${(memory.external / 1024 / 1024).toFixed(2)} MB`
};
}
console.log('Uso de memória:', formatMemoryUsage(process.memoryUsage()));
3. Monitoramento de Memória em Tempo Real
Se você quiser monitorar o uso de memória em tempo real, pode configurar um log periódico usando setInterval:
setInterval(() => {
console.log('Uso de memória:', formatMemoryUsage(process.memoryUsage()));
}, 5000); // A cada 5 segundos
4. Monitorando o Uso de Memória Externamente
Para casos em que você deseja verificar o uso de memória a partir de outro terminal ou sem modificar seu código, aqui estão algumas opções:
4.1. Usando Comandos do Sistema
No Linux/Unix:
ps aux | grep node
top -p <PID>
No Windows:
tasklist | findstr node
Então, você pode monitorar o uso de memória com ferramentas como top, htop, ou o Gerenciador de Tarefas no Windows.
4.2. Usando a Biblioteca pidusage
O pacote pidusage é uma ferramenta conveniente para rastrear o uso de memória e CPU para qualquer processo Node.js. Instale-o com:
npm install pidusage
Aqui está um exemplo de uso:
import pidusage from 'pidusage';
setInterval(async () => {
const stats = await pidusage(process.pid);
console.log(`Memória: ${(stats.memory / 1024 / 1024).toFixed(2)} MB`);
}, 5000);
Conclusão
Para monitorar o uso de memória de forma eficaz:
- Use
process.memoryUsage()para obter informações integradas sobre o consumo de memória da sua aplicação. - Formate a saída para melhor legibilidade, se necessário.
- Para monitoramento em tempo real, utilize logs periódicos ou ferramentas externas como
pidusage,top, ouhtop.
Essas técnicas podem ajudá-lo a manter suas aplicações Node.js otimizadas e prevenir que problemas de memória impactem o desempenho.