PM2 para JavaScript (Node.js): guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

PM2 para JavaScript (Node.js): guia completo com exemplos práticos

1. O que é e para que serve

PM2 (Process Manager 2) é um poderoso gerenciador de processos para aplicações Node.js, projetado para uso em ambiente de produção. Ele permite iniciar, parar, reiniciar e monitorar aplicações Node.js, garantindo alta disponibilidade e tolerância a falhas. O PM2 reinicia automaticamente processos que falham, distribui a carga entre múltiplas instâncias da aplicação (clusterização), oferece um balanceador de carga integrado e suporta reinicializações suaves (graceful) sem tempo de inatividade.

Em ambientes de produção, aplicações Node.js frequentemente enfrentam erros inesperados, vazamentos de memória ou sobrecargas. O PM2 resolve esses problemas atuando como um "daemon guardião": ele monitora o estado de cada processo, registra stdout/stderr, fornece métricas de desempenho (CPU, memória) e permite gerenciar a aplicação via CLI ou API. Sem o PM2, o desenvolvedor teria que escrever scripts manualmente para reinicialização, monitoramento e escalabilidade — o PM2 automatiza todas essas tarefas.

Os principais recursos do PM2 incluem: clusterização (execução de múltiplos workers em todos os núcleos da CPU), reinicialização sem downtime, gerenciamento de ambiente (desenvolvimento/produção), monitoramento integrado (pm2 monit), suporte a arquivos de configuração (ecosystem.config.js) e integração com sistemas de inicialização (systemd, upstart) para inicialização automática ao ligar o servidor.

2. Instalação

O PM2 é instalado globalmente via npm (Node Package Manager). Comando exato:

npm install -g pm2

Para instalar uma versão específica:

npm install -g pm2@5.3.0

Após a instalação, verifique a versão:

pm2 --version

3. Início rápido — exemplo mínimo funcional

Crie uma aplicação Node.js simples app.js:

// app.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Olá do PM2!\n');
});

const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
  console.log(`Servidor rodando na porta ${PORT}`);
});

Inicie a aplicação com o PM2:

pm2 start app.js --name my-app

Verifique o status:

pm2 status

Pare a aplicação:

pm2 stop my-app

4. Principais métodos/funções/classes

4.1. pm2.start() — Iniciar aplicação

Assinatura: pm2.start(script, options, callback)

O que faz: Inicia o script especificado como um processo PM2 com as opções definidas (nome, número de instâncias, variáveis de ambiente).

Exemplo de código funcional:

const pm2 = require('pm2');

pm2.connect((err) => {
  if (err) {
    console.error(err);
    process.exit(2);
  }

  pm2.start({
    script: 'app.js',
    name: 'my-app',
    instances: 2, // iniciar 2 instâncias
    exec_mode: 'cluster', // modo cluster
    env: {
      NODE_ENV: 'production',
      PORT: 3000
    }
  }, (err, apps) => {
    if (err) {
      console.error(err);
      return pm2.disconnect();
    }
    console.log('Aplicação iniciada:', apps);
    pm2.disconnect();
  });
});

4.2. pm2.stop() — Parar processo

Assinatura: pm2.stop(process, callback)

O que faz: Para o processo especificado (por nome, ID ou todos os processos).

Exemplo de código funcional:

const pm2 = require('pm2');

pm2.connect((err) => {
  if (err) {
    console.error(err);
    process.exit(2);
  }

  // Par                    

Recommendations