PM2: QUÉ ES Y CÓMO GESTIONAR PROCESOS DE NODE.JS
PM2 es un módulo de NodeJS de gestión de procesos. Está diseñado para facilitar el despliegue, monitoreo y mantenimiento de aplicaciones en entornos de producción. Es un process manager que permite ejecutar aplicaciones NodeJS de manera persistente, reiniciarlas automáticamente en caso de fallos, balancear carga entre múltiples instancias y monitorizar su rendimiento, todo desde una interfaz simple de línea de comandos. Su objetivo es simplificar tareas como:- Mantener aplicaciones corriendo de forma continua, incluso después de reiniciar el servidor.
- Reiniciar automáticamente una aplicación si se produce un error o se consume demasiada memoria.
- Escalar aplicaciones ejecutando múltiples instancias en clúster para aprovechar múltiples núcleos de CPU.
- Monitorear el uso de CPU, memoria y logs en tiempo real.
- Gestionar aplicaciones como servicios en un servidor.
Características principales de PM2
Suponiendo que una APP, hecha con Express, que genera PDFs (como en tu pregunta anterior). Aquí se muestra cómo usar PM2 para ejecutarla, monitorizarla y escalarla.
const express = require('express');
const PDFDocument = require('pdfkit');
const app = express();
app.get('/generate-pdf', (req, res) => {
const doc = new PDFDocument();
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'attachment; filename=factura.pdf');
doc.pipe(res); // Stream el PDF al cliente
doc.fontSize(20).text('Factura Generada', 50, 50);
doc.end();
});
app.listen(process.env.PORT || 3000, () => console.log('API corriendo'));
- Iniciar la aplicación: '"pm2 start app.js --name "pdf-api""'. Se le puede asignar un nombre al proceso con '"--name "pdf-api""' para identificarlo.
- Ver lista de procesos con '"pm2 list"'. Mostrando los procesos en ejecución, con ID, nombre, uso de memoria y CPU.
- Monitorización en tiempo real: '"pm2 monit"'. Muestra un dashboard con métricas de CPU, memoria y logs.
- Habilitar modo clúster: "pm2 start app.js --name "pdf-api" -i max". Ejecuta múltiples instancias para aprovechar todos los núcleos de CPU.
- Ver logs: "pm2 logs pdf-api".Muestra los logs de la aplicación, útil para depurar errores.
- Reiniciar sin downtime: "pm2 reload pdf-api". Recarga la aplicación sin interrumpir las solicitudes.
- Configurar inicio automático: "pm2 startup"y luego "pm2 save".Asegura que la aplicación se inicie al reiniciar el servidor.