PM2

``

  • nodejs
  • gestion de procesos

    Introducción a PM2

    PM2 es un gestor de procesos para Node.js que permite ejecutar aplicaciones en producción, ofreciendo funcionalidades de monitoreo, balanceo de carga, reinicio automático y gestión de clústeres. Es ideal para aplicaciones backend que requieren alta disponibilidad y escalabilidad.

Instalación

Para instalar PM2 de forma global:

npm install pm2@latest -g

`

Verificar la instalación:

pm2 -v

Comandos básicos de PM2

  • Iniciar una aplicación
pm2 start app.js
  • Listar procesos activos
pm2 list
  • Ver logs
pm2 logs
  • Reiniciar un proceso
pm2 restart app.js
  • Detener un proceso
pm2 stop app.js
  • Eliminar un proceso
pm2 delete app.js

Gestión de Clústeres

PM2 soporta Cluster Mode, que permite ejecutar múltiples instancias de la aplicación aprovechando todos los núcleos del CPU.

pm2 start app.js -i max
  • -i max: ejecuta tantas instancias como núcleos disponibles.
  • Balanceo de carga interno para distribuir las solicitudes entre procesos.

Más información sobre clústeres:

  • PM2 - Cluster Mode
  • Cluster - Node.js v23.0.0 Documentation

Monitoreo y Logs

PM2 proporciona monitoreo en tiempo real de CPU, memoria y estado de procesos:

pm2 monit
  • Permite ver métricas de uso de memoria y CPU.
  • Integración con logs de errores y salida estándar.

Configuración avanzada

Archivos de configuración (ecosystem.config.js)

Permite definir múltiples aplicaciones y configuraciones de entorno:

module.exports = {
	apps: [
		{
			name: "app",
			script: "./app.js",
			instances: "max",
			exec_mode: "cluster",
			env: {
				NODE_ENV: "development"
			},
			env_production: {
				NODE_ENV: "production"
			}
		}
	]
};
  • instances: número de procesos (puede ser max para todos los núcleos).
  • exec_mode: "fork" o "cluster".
  • env y env_production: variables de entorno por entorno.

Autorestart y Watch Mode

  • Reinicio automático si la app falla:
pm2 start app.js --watch
  • Permite reiniciar automáticamente cuando hay cambios en los archivos.

Integración con Node.js y Producción

  • Usar PM2 es recomendable para aplicaciones node.js en producción.
  • Mejora la resiliencia de la app y la disponibilidad.
  • Compatible con Docker y sistemas de CI/CD.

Recursos y Lectura recomendada

  • PM2 - Quick Start
  • Cómo usar PM2 para gestionar una app en Node.js – Clouding.io
  • Aplicación NodeJs en producción con pm2. - by Christian Jimenez - Medium
  • Backend
  • monitoreo

PM2 en 2025: Estado Actual y Alternativas

¿Qué es PM2 en 2025?

PM2 sigue siendo uno de los gestores de procesos más populares para aplicaciones node.js en producción. Es un process manager para Node.js/Bun con balanceador de carga interno, gestión automática de reinicios, monitoreo y soporte para múltiples instancias/cluster. Está disponible vía npm y es compatible con Linux, macOS y Windows, soportando múltiples versiones modernas de Node.js y también Bun. npmjs.com

Características principales

  • Ejecución y monitoreo de procesos Node/Bun con CLI sencillo (pm2 start app.js) GitHub PM2
  • Modo cluster para aprovechar múltiples núcleos CPU PM2 Cluster Mode
  • Monitoreo en tiempo real (pm2 monit) PM2 Monitoring
  • Gestión de logs (pm2 logs, análisis y rotación mediante módulos) PM2 Logs
  • Integración con plataforma de monitoreo remota como Keymetrics Keymetrics
  • Scripts de arranque automático en sistemas (startup scripts) PM2 Startup

Consideraciones prácticas

  • Aunque popular, en algunos casos PM2 puede tener problemas de estabilidad (bugs o gestión de memoria) en entornos con pocos recursos o hosting compartido sin soporte de systemd. Reddit Node
  • Usuarios han reportado que puede ser más pesado o menos simple que soluciones nativas del sistema operativo. Reddit Node

Alternativas a PM2 en 2025

1. Soluciones nativas / del sistema

  • systemd (Linux): gestor de servicios nativo en la mayoría de distribuciones. Asegura reinicio de servicios, logging integrados y menor complejidad de dependencias externas. Ideal para producción estable sin necesidad de dependencias de Node. Medium PM2 Guide

2. Herramientas simples de Node

  • forever: mantiene scripts Node en ejecución continua, reiniciándolos tras fallos. Más simple y ligera, pero con menos características que PM2 (sin clustering ni monitoreo avanzado). StackShare
  • supervisor / SupervisorD: herramientas que permiten reinicio automático y observación de cambios en archivos. Ideal para desarrollo o uso ligero, no tan avanzado para producción. CompileNRun

3. Orquestadores y contenedores

  • Docker + systemd / Entrypoint scripts: encapsular la app en contenedores y dejar que Docker (o Kubernetes más allá del proceso) gestione reinicios y escalado. En entornos con contenedores, Docker o un orquestador (como K8s) pueden reemplazar PM2 porque se encargan del ciclo de vida del proceso desde la capa de infraestructura. Reddit Node

Comparación de opciones

  • PM2: robusto para Node.js, clustering, monitoreo integrado, capacidad programática. Ideal para despliegues Node tradicionales. npmjs.com
  • systemd: más estable y simple en servidores Linux, sin dependencias de Node. Mejor para producción sobria. Medium PM2 Guide
  • forever: adecuado para casos sencillos donde solo se necesita que un script se mantenga vivo. StackShare
  • supervisor: útil en desarrollo o despliegues ligeros. CompileNRun
  • Contenedores (Docker/K8s): cuando la arquitectura está CONTENERIZADA, normalmente no se necesita PM2 dentro de los contenedores, ya que la plataforma asume la gestión de procesos y estado. Reddit Node

Ejemplo simplificado de uso de systemd como alternativa


[Unit]
Description=API Node.js
After=network.target

[Service]
ExecStart=/usr/bin/node /var/www/app/index.js
Restart=always
User=nodeapp
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

systemd ofrece un control más directo al sistema operativo que muchos gestores de procesos escritos en Node.

Recursos y lectura recomendada

  • PM2 - Quick Start
  • Backend
  • node.js
  • monitoreo
  • Guías de configuración de systemd para Node.js
  • Comparativas modernas de gestores de procesos Node.js

PM2 y Gestión de Procesos Node.js en 2025

Gestión Avanzada de Procesos con PM2

  • Estrategias de escalado dinámico: PM2 permite ajustar el número de instancias según la carga usando scripts externos o integraciones con métricas.
  • Restart Policies: además del reinicio automático, PM2 soporta reglas avanzadas para reiniciar solo en ciertos errores o condiciones de memoria.
  • Ecosystem File Avanzado: se pueden definir múltiples apps con variables de entorno, watch & ignore, cron restart y configuración de log personalizada.
  • Integración con CI/CD: PM2 puede integrarse con pipelines de despliegue continuo para reiniciar aplicaciones automáticamente tras un git pull o build.

Monitorización Avanzada

  • Integración con Keymetrics: permite dashboards en tiempo real, alertas sobre memoria/CPU, métricas de respuesta de endpoints y health checks.
  • Logs estructurados: PM2 soporta rotación, compresión y exportación de logs a servicios externos (ELK, Grafana Loki).
  • Alertas y métricas: configuración de alertas por uso excesivo de memoria, caídas de procesos o errores críticos.

Alternativas Modernas y Comparación 2025

  • systemd: sigue siendo la alternativa más estable y ligera para producción Linux.
  • Docker y Kubernetes: reemplazan parcialmente PM2 al manejar el ciclo de vida y escalado de contenedores.
  • Bun PM2: nuevas versiones soportan Bun, ampliando la compatibilidad con runtimes modernos.
  • Herramientas ligeras: forever, supervisor o nodemon para desarrollo rápido y despliegues simples.

Seguridad y Buenas Prácticas

  • Separación de entornos: usar variables de entorno para desarrollo, staging y producción.
  • Control de usuario y permisos: ejecutar PM2 bajo un usuario no root y limitar acceso a logs.
  • Backup de configuración: versionar ecosystem.config.js y mantener scripts de startup en repositorios.
  • Monitoreo de recursos: revisar uso de memoria y CPU de cada proceso; evitar memory leaks en Node.js.

Casos de Uso Avanzados

  • Microservicios: cada microservicio puede correr en PM2, con balanceo interno y monitoreo centralizado.
  • APIs de alta concurrencia: cluster mode distribuye carga y mejora latencia.
  • Aplicaciones serverless locales: PM2 puede simular escalado y disponibilidad antes de migrar a serverless.

Recursos y Lectura Avanzada