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 sermaxpara todos los núcleos).exec_mode:"fork"o"cluster".envyenv_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 pullo 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
- PM2 - Quick Start
- PM2 - Cluster Mode
- 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
- Keymetrics Dashboard
- PM2 GitHub
- Systemd para Node.js
¿Te gusta este contenido? Suscríbete vía RSS