PM2 - Process Manager para Node.js
¿Qué es PM2?
PM2 es un administrador de procesos para aplicaciones Node.js (y otros lenguajes), diseñado para ejecutar, monitorear y mantener procesos activos en segundo plano. Se usa principalmente en entornos de producción para asegurar que las aplicaciones funcionen de manera estable y continua, incluso tras fallos o reinicios del sistema.
¿Para qué sirve PM2?
| Funcionalidad | Descripción |
|---|---|
| Ejecución en segundo plano | Permite ejecutar apps Node.js sin dejar la terminal abierta. |
| Reinicio automático | Reinicia apps en caso de errores o fallos. |
| Clustering | Ejecuta múltiples instancias (multi-core). |
| Monitoreo | Muestra estado, CPU y RAM por proceso. |
| Logging | Guarda logs de salida estándar y errores. |
| Autostart | Inicia apps automáticamente al reiniciar el servidor. |
| Ecosystem File | Define múltiples apps y entornos en un archivo centralizado. |
Instalación
npm install -g pm2
Requiere tener Node.js instalado previamente.
Comandos Básicos
pm2 start app.js # Ejecutar la app
pm2 list # Ver procesos activos
pm2 stop app # Detener un proceso
pm2 restart app # Reiniciar un proceso
pm2 delete app # Eliminar un proceso de PM2
pm2 logs # Ver logs en tiempo real
pm2 monit # Monitoreo interactivo en consola
Modo Clúster
pm2 start app.js -i max
- Ejecuta la app en modo clúster, usando todos los núcleos disponibles.
- Mejora el rendimiento en servidores multi-core.
Ecosystem File
Permite definir configuración de múltiples procesos en un solo archivo.
ecosystem.config.js
module.exports = {
apps: [
{
name: 'api',
script: './server.js',
instances: 2,
exec_mode: 'cluster',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
]
};
Ejecutar con ecosystem
pm2 start ecosystem.config.js --env production
Autostart tras reinicio del servidor
Guardar estado actual
pm2 save
Configurar inicio automático
pm2 startup
Este comando devuelve una línea que se debe ejecutar para registrar PM2 como servicio del sistema.
Logs
pm2 logs # Ver todos los logs en tiempo real
pm2 logs app # Ver logs de una app específica
Los logs se almacenan por defecto en
~/.pm2/logs.
PM2 con otros lenguajes
También se puede ejecutar scripts en otros lenguajes usando el parámetro --interpreter.
pm2 start script.py --interpreter python3
pm2 start script.sh
Integración con Servidores Virtuales (VPS)
- Desplegar la app en el VPS
- Instalar PM2 globalmente
- Ejecutar la app con
pm2 start - Guardar configuración con
pm2 save - Configurar
pm2 startuppara que inicie automáticamente
Comparación con Otros Process Managers
| Herramienta | Soporte Node.js | Clustering | Logs | Autostart | Observabilidad |
|---|---|---|---|---|---|
| PM2 | Sí | Sí | Sí | Sí | Sí |
| forever | Sí | No | Básico | Parcial | No |
| systemd | Genérico | No | Medio | Sí | Limitado |
| nodemon | Sí (dev) | No | No | No | No |
Recursos
- Sitio oficial: https://pm2.keymetrics.io