O PM2 é um dos pacotes mais usados para monitoria e também manter aplicações NodeJS rodando. Recentemente apresentou alguns, vou explicar a treta nesse artigo e também alternativas para ele.

Um problema relacionado ao PM2 foi colocado no Github, motivo uma das dependencias retorna um status code 503. Essa dependencia não usava o npm e estava em um outro servidor.

Isso logo gerou algumas reações e investigações sobre essa dependencia e que Luke Jackson encontrou como um simples console.log com a mensagem 'Smarty Smart Smarter'

A empresa que mantem o PM2 consertou esse problema em menos de 24horas e justificou o problema disso como não podendo confiar nas estatiscas de download no npm e usa para gerar o gráfico da home.

Coletar dados para melhorar um produto não é um problema em si, mas a forma de fazer isso é complicado. Mesmo que o código final seja só um pequeno console.log, isso deixa as instalações de dependencias mais lentas e expões os servidores que fazem as requisições para essa dependência.

Alternativas ao PM2

Já deu para ver que não podemos confiar muito em uma dependencia como o PM2 então o que usar no lugar?

Configure seu serviço usando o systemmd, ele gerencia os processos da sua aplicação e reinicia da forma correta. Se quiser se aprofundar mais só ler essa série bem completa sobre o assunto. Como o developerworks não tem a sequencia correta, só olha na lista abaixo ;)

Parte 1, Parte 2, Parte 3, Parte 4, Parte 5 e Parte 6

Outra opção que pode ser bem util configurar o seu Docker para reiniciar automaticamente.

docker run --autorestart

Ou se você já não se importar com mais nada, existe o forever.

[sudo] npm install forever -g

Ou então, você usa o systemctl docker run forever, mas não usa o PM2. #brinks

Eles já resolveram o problema e pode usar se você achar necessário. Mas temos mais um problema relacionado ao ecossistema de pacotes javascript, o que é o maior também para ser justos.

Photo by Italo Melo from Pexels