1. Aumentar a Memória Alocada para o Node.js
- Aumentar a Memória Alocada para o Node.js
Por padrão, o Node.js usa um limite de memória relativamente baixo (~2 GB para sistemas de 64 bits). Para aumentar esse limite, use a flag –max-old-space-size:
NODE_OPTIONS=”–max-old-space-size=4096″ npm run start:prod
Isso define o limite de memória para 4GB. Você pode ajustar esse valor conforme necessário, por exemplo, 8192 para 8GB.
Se estiver no Windows (cmd), use:
set NODE_OPTIONS=–max-old-space-size=4096 && npm run start:prod
- Rodar em um Ambiente com Mais Recursos
Se você estiver executando o projeto em um servidor, garanta que ele tenha CPU e memória suficientes. Em um ambiente de produção, geralmente é recomendado:
Um servidor com pelo menos 2 vCPUs e 4GB de RAM (para aplicações médias).
Escalar horizontalmente com balanceamento de carga (Nginx, PM2, Kubernetes).
- Usar o PM2 para Gerenciar e Otimizar a Execução
O PM2 é um gerenciador de processos para Node.js que melhora o desempenho e a disponibilidade do seu projeto.
Instale o PM2 globalmente:
npm install -g pm2
Inicie sua aplicação em modo cluster (caso seja compatível):
pm2 start npm –name “meu-projeto” — run start:prod -i max
-i max: Usa todos os núcleos da CPU disponíveis.
--name "meu-projeto": Dá um nome à instância.
Para persistir a execução mesmo após reinícios do servidor:
pm2 save
pm2 startup
- Verificar Leaks de Memória
Se o seu projeto estiver consumindo muitos recursos de forma anormal, pode haver vazamentos de memória. Use ferramentas como:
Chrome DevTools: Inspecione o heap do Node.js (chrome://inspect).
Heapdump: Gere dumps de memória para análise.
Exemplo de uso do heapdump:
const heapdump = require(‘heapdump’);
heapdump.writeSnapshot(‘./heapdump-‘ + Date.now() + ‘.heapsnapshot’);
- Utilizar um Servidor Web para Melhorar a Performance
Se o seu projeto for uma API ou aplicação web, evite expor diretamente o Node.js. Use um servidor como Nginx ou Apache para gerenciar requisições e cache.
Exemplo de configuração básica para Nginx:
server {
listen 80;
server_name meu-dominio.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Isso reduz a carga no Node.js, otimizando a entrega de conteúdo.
- Ativar o –production para Melhor Performance
Ao rodar o seu projeto, certifique-se de que ele está rodando em modo de produção:
NODE_ENV=production npm run start:prod
Isso desativa logs detalhados e otimiza a execução.
Essas otimizações ajudam a melhorar a performance do seu projeto. Se precisar de algo mais específico, me avise! 🚀