Introducción a PM2: Gestión de Procesos en Node.js

PM2 es un paquete de npm que te permite ejecutar programas en segundo plano, lo que lo convierte en una herramienta esencial al desplegar aplicaciones de Node.js o frameworks basados en este, como Next.js, NestJS, Express, y muchos más.


¿Qué es PM2?

PM2 (Process Manager 2) es un administrador de procesos de Node.js que facilita:

  • Mantener las aplicaciones en ejecución constantemente.
  • Reiniciar aplicaciones automáticamente en caso de fallos.
  • Monitorear y administrar múltiples procesos de manera sencilla.
  • Escalar aplicaciones en múltiples núcleos de CPU.

Instalación

Para instalar PM2 globalmente en tu sistema, ejecuta el siguiente comando:

npm install -g pm2

Comandos Comunes de PM2

Listar Programas

Puedes obtener un listado de los programas gestionados por PM2 con cualquiera de los siguientes comandos:

pm2 list
pm2 ls
pm2 status

Recargar Aplicaciones

Para recargar todas las aplicaciones o una específica:

pm2 reload   # Recarga todas las aplicaciones
pm2 reload 0 # Recarga la aplicación con ID 0

Monitorear Procesos

Para abrir una interfaz interactiva con información en tiempo real de los procesos:

pm2 monit

Ver Logs

Puedes ver los registros de todas las aplicaciones o de una específica:

pm2 logs   # Muestra los logs de todas las aplicaciones
pm2 logs 0 # Muestra los logs de la aplicación con ID 0

Uso Básico

  1. Iniciar una Aplicación: Para iniciar un archivo JavaScript con PM2, usa:

    pm2 start app.js
    
  2. Detener una Aplicación:

    pm2 stop 0
    
  3. Eliminar una Aplicación:

    pm2 delete 0
    
  4. Configurar un Ecosystem File: PM2 permite gestionar configuraciones avanzadas usando un archivo llamado ecosystem.config.js. Puedes generarlo con:

    pm2 init
    

Recursos Adicionales


Conclusión

PM2 es una herramienta poderosa y sencilla que mejora el rendimiento y la estabilidad de tus aplicaciones Node.js en producción. Con su soporte para monitoreo, recarga y escalado, se convierte en una solución ideal para cualquier desarrollador que busque optimizar sus despliegues.