{"id":559,"date":"2025-03-24T11:00:00","date_gmt":"2025-03-24T10:00:00","guid":{"rendered":"https:\/\/servimonkey.com\/blog\/?p=559"},"modified":"2025-03-14T12:31:16","modified_gmt":"2025-03-14T11:31:16","slug":"pm2-que-es","status":"publish","type":"post","link":"https:\/\/servimonkey.com\/blog\/2025\/03\/24\/pm2-que-es\/","title":{"rendered":"PM2: Qu\u00e9 es, c\u00f3mo funciona y c\u00f3mo usarlo en Node.js"},"content":{"rendered":"<figure style=\"aspect-ratio:16\/9;\" class=\"wp-block-post-featured-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/servimonkey.com\/blog\/wp-content\/uploads\/2025\/03\/46826393-9c51-4c9c-9d2f-5678c802c5b5.webp\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"pm2\" style=\"width:100%;height:100%;object-fit:cover;\" srcset=\"https:\/\/servimonkey.com\/blog\/wp-content\/uploads\/2025\/03\/46826393-9c51-4c9c-9d2f-5678c802c5b5.webp 1024w, https:\/\/servimonkey.com\/blog\/wp-content\/uploads\/2025\/03\/46826393-9c51-4c9c-9d2f-5678c802c5b5-300x300.webp 300w, https:\/\/servimonkey.com\/blog\/wp-content\/uploads\/2025\/03\/46826393-9c51-4c9c-9d2f-5678c802c5b5-150x150.webp 150w, https:\/\/servimonkey.com\/blog\/wp-content\/uploads\/2025\/03\/46826393-9c51-4c9c-9d2f-5678c802c5b5-768x768.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" title=\"\"><\/figure>\n\n\n<p>Cuando trabajas con aplicaciones <strong>Node.js en producci\u00f3n<\/strong>, mantenerlas activas sin interrupciones es un desaf\u00edo. <strong>Ca\u00eddas inesperadas, problemas de memoria, reinicios manuales y falta de monitoreo<\/strong> pueden afectar el rendimiento y la experiencia del usuario.<\/p>\n\n\n\n<p>Para resolver esto, <strong>PM2<\/strong> se ha convertido en la herramienta favorita de desarrolladores y administradores de servidores. Es un <strong>gestor de procesos avanzado<\/strong> que permite ejecutar, monitorear y administrar aplicaciones de Node.js con facilidad.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>\u00bfQu\u00e9 es PM2?<\/strong><\/h3>\n\n\n\n<p>PM2 es un <strong>administrador de procesos para Node.js<\/strong> que permite ejecutar y monitorear aplicaciones en segundo plano. Se encarga de:<\/p>\n\n\n\n<p>\u2705 <strong>Mantener la aplicaci\u00f3n siempre en ejecuci\u00f3n<\/strong> (auto-reinicio en fallos).<br>\u2705 <strong>Reiniciar autom\u00e1ticamente cuando hay cambios en el c\u00f3digo<\/strong> (hot reload).<br>\u2705 <strong>Balancear la carga en m\u00faltiples n\u00facleos<\/strong> con Cluster Mode.<br>\u2705 <strong>Registrar logs y estad\u00edsticas de rendimiento en tiempo real<\/strong>.<br>\u2705 <strong>Integrarse con Docker y entornos en la nube como AWS, GCP y Azure<\/strong>.<\/p>\n\n\n\n<p>\ud83d\udca1 <strong>Dato clave:<\/strong> PM2 <strong>se ejecuta como un demonio<\/strong>, lo que significa que sigue corriendo en segundo plano sin depender de la terminal.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8220;En HostArmada queremos ofrecer a nuestros clientes las mejores herramientas para gestionar sus aplicaciones NodeJS. As\u00ed preinstalamos PM2 en todos los planes de hospedaje, permitiendo a nuestros clientes usarlo de inmediato.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p><em>(Aqu\u00ed integro tu experiencia personal sobre PM2 y su implementaci\u00f3n en HostArmada.)<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Instalaci\u00f3n y configuraci\u00f3n de PM2<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Requisitos previos<\/strong><\/h3>\n\n\n\n<p>Antes de instalar PM2, aseg\u00farate de tener <strong>Node.js y npm<\/strong> en tu servidor.<\/p>\n\n\n\n<p>\ud83d\udccc <strong>Para verificar la versi\u00f3n instalada:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v\nnpm -v\n<\/code><\/pre>\n\n\n\n<p>Si no tienes Node.js instalado, puedes hacerlo con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/deb.nodesource.com\/setup_18.x | sudo -E bash -\nsudo apt install -y nodejs\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Instalar PM2<\/strong><\/h3>\n\n\n\n<p>Para instalar PM2 globalmente en tu sistema, usa:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g pm2\n<\/code><\/pre>\n\n\n\n<p>\ud83d\udca1 <strong>Verifica la instalaci\u00f3n con:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 -v\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Ejecutar y administrar procesos con PM2<\/strong><\/h2>\n\n\n\n<p>Supongamos que tienes una aplicaci\u00f3n Node.js llamada <code>app.js<\/code>. Puedes iniciarla con PM2 usando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 start app.js\n<\/code><\/pre>\n\n\n\n<p>\ud83d\udccc <strong>Comandos esenciales de administraci\u00f3n:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 list      # Ver procesos activos\npm2 stop 0    # Detener un proceso por ID\npm2 restart 0 # Reiniciar un proceso\npm2 delete 0  # Eliminar un proceso de la lista\n<\/code><\/pre>\n\n\n\n<p>\ud83d\udd39 <strong>Ver logs en tiempo real<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 logs\n<\/code><\/pre>\n\n\n\n<p>\ud83d\udd39 <strong>Monitorear estad\u00edsticas del proceso<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 monit\n<\/code><\/pre>\n\n\n\n<p>Esto te permite ver <strong>uso de CPU, memoria y eventos<\/strong> en tiempo real.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Configuraci\u00f3n avanzada de PM2<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Ecosystem.config.js para m\u00faltiples procesos<\/strong><\/h3>\n\n\n\n<p>En lugar de iniciar cada aplicaci\u00f3n manualmente, puedes definirlas en un archivo de configuraci\u00f3n:<\/p>\n\n\n\n<p>\ud83d\udccc <strong>Ejemplo de <code>ecosystem.config.js<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>module.exports = {\n  apps: &#91;\n    {\n      name: \"mi-app\",\n      script: \"app.js\",\n      instances: 2,\n      exec_mode: \"cluster\",\n      env: {\n        NODE_ENV: \"production\"\n      }\n    }\n  ]\n};\n<\/code><\/pre>\n\n\n\n<p>Para iniciar todos los procesos definidos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 start ecosystem.config.js\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Balanceo de carga con Cluster Mode<\/strong><\/h3>\n\n\n\n<p>Si tu aplicaci\u00f3n es de <strong>alto tr\u00e1fico<\/strong>, puedes usar Cluster Mode para aprovechar todos los n\u00facleos del servidor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 start app.js -i max\n<\/code><\/pre>\n\n\n\n<p>Esto ejecutar\u00e1 <strong>tantas instancias como CPUs disponibles<\/strong> tenga el servidor.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Integraci\u00f3n de PM2 con Docker y entornos en la nube<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Usar PM2 en Docker<\/strong><\/h3>\n\n\n\n<p>Si est\u00e1s ejecutando Node.js en <strong>Docker<\/strong>, PM2 es una excelente opci\u00f3n. Puedes definir tu aplicaci\u00f3n en un Dockerfile:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM node:18\nWORKDIR \/app\nCOPY . .\nRUN npm install pm2 -g\nCMD &#91;\"pm2-runtime\", \"start\", \"ecosystem.config.js\"]\n<\/code><\/pre>\n\n\n\n<p>Esto permite que la aplicaci\u00f3n <strong>se administre con PM2 dentro del contenedor<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>PM2 en AWS, GCP y Azure<\/strong><\/h3>\n\n\n\n<p>PM2 puede integrarse con servicios en la nube para mejorar la administraci\u00f3n de procesos. Algunas ventajas incluyen:<\/p>\n\n\n\n<p>\u2714 <strong>AWS Elastic Beanstalk<\/strong>: Soporta PM2 para ejecutar aplicaciones Node.js escalables.<br>\u2714 <strong>Google Cloud Run<\/strong>: Se puede configurar PM2 en instancias de Compute Engine.<br>\u2714 <strong>Azure App Service<\/strong>: Permite ejecutar aplicaciones Node.js con PM2 de manera eficiente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Comparaci\u00f3n de PM2 con otros gestores de procesos<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Caracter\u00edstica<\/th><th>PM2<\/th><th>Forever<\/th><th>Systemd<\/th><\/tr><\/thead><tbody><tr><td>Auto-reinicio<\/td><td>\u2705 S\u00ed<\/td><td>\u2705 S\u00ed<\/td><td>\u2705 S\u00ed<\/td><\/tr><tr><td>Balanceo de carga<\/td><td>\u2705 S\u00ed<\/td><td>\u274c No<\/td><td>\u274c No<\/td><\/tr><tr><td>Logs y monitoreo<\/td><td>\u2705 S\u00ed<\/td><td>\u2705 S\u00ed<\/td><td>\u2705 S\u00ed<\/td><\/tr><tr><td>Integraci\u00f3n con Docker<\/td><td>\u2705 S\u00ed<\/td><td>\u274c No<\/td><td>\u274c No<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\ud83d\udccc <strong>Conclusi\u00f3n:<\/strong> Si buscas <strong>escalabilidad, monitoreo en tiempo real y facilidad de uso<\/strong>, PM2 es la mejor opci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7. Consejos y mejores pr\u00e1cticas con PM2<\/strong><\/h2>\n\n\n\n<p>\ud83d\udd39 <strong>Habilita auto-restart con <code>pm2 startup<\/code> para evitar ca\u00eddas tras un reinicio del sistema.<\/strong><br>\ud83d\udd39 <strong>Usa cluster mode (<code>-i max<\/code>) para mejorar la escalabilidad en servidores multin\u00facleo.<\/strong><br>\ud83d\udd39 <strong>Monitorea rendimiento con <code>pm2 monit<\/code> y <code>pm2 logs<\/code>.<\/strong><br>\ud83d\udd39 <strong>Utiliza PM2 Plus si necesitas dashboards avanzados de monitoreo.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>8. Conclusi\u00f3n: \u00bfVale la pena usar PM2 en 2024?<\/strong><\/h2>\n\n\n\n<p>Sin duda, <strong>PM2 sigue siendo la mejor herramienta<\/strong> para gestionar aplicaciones <strong>Node.js en producci\u00f3n<\/strong>. Su capacidad de <strong>auto-reinicio, monitoreo en tiempo real y balanceo de carga<\/strong> lo hacen indispensable para cualquier desarrollador o administrador de servidores.<\/p>\n\n\n\n<p>Si est\u00e1s manejando <strong>aplicaciones de alto tr\u00e1fico o entornos en la nube<\/strong>, <strong>PM2 es la soluci\u00f3n ideal<\/strong> para asegurar estabilidad y rendimiento.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Mi Opini\u00f3n sobre PM2 y su Impacto en Node.js<\/strong><\/h3>\n\n\n\n<p>Despu\u00e9s de trabajar con <strong>Node.js en entornos de producci\u00f3n<\/strong>, puedo decir que <strong>PM2 es una herramienta imprescindible<\/strong> para cualquier desarrollador o administrador de servidores. Su capacidad para <strong>gestionar procesos, reiniciar aplicaciones autom\u00e1ticamente y optimizar el rendimiento<\/strong> ha cambiado por completo la forma en que desplegamos y monitoreamos nuestras aplicaciones.<\/p>\n\n\n\n<p>Lo que m\u00e1s valoro de PM2 es su <strong>simplicidad y eficiencia<\/strong>. En pocos comandos puedes iniciar una aplicaci\u00f3n, configurar auto-reinicio tras fallos y habilitar monitoreo en tiempo real. Adem\u00e1s, la opci\u00f3n de <strong>Cluster Mode<\/strong> permite aprovechar todos los n\u00facleos del servidor sin esfuerzo adicional.<\/p>\n\n\n\n<p>Sin embargo, hay algo que siempre me ha generado debate: <strong>\u00bfPM2 es realmente la mejor opci\u00f3n para producci\u00f3n?<\/strong> Algunos desarrolladores prefieren <strong>Systemd o Docker Swarm<\/strong>, mientras que otros encuentran en PM2 una soluci\u00f3n m\u00e1s flexible y f\u00e1cil de manejar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando trabajas con aplicaciones Node.js en producci\u00f3n, mantenerlas activas sin interrupciones es un desaf\u00edo. Ca\u00eddas inesperadas, problemas de memoria, reinicios manuales y falta de monitoreo pueden afectar el rendimiento y la experiencia del usuario. Para resolver esto, PM2 se ha convertido en la herramienta favorita de desarrolladores y administradores de servidores. Es un gestor de procesos avanzado que permite ejecutar, monitorear y administrar aplicaciones de Node.js con facilidad. \ud83d\udd39 \u00bfQu\u00e9 es PM2? PM2 es un administrador de procesos para Node.js que permite ejecutar y monitorear aplicaciones en segundo plano. Se encarga de: \u2705 Mantener la aplicaci\u00f3n siempre en ejecuci\u00f3n (auto-reinicio en fallos).\u2705 Reiniciar autom\u00e1ticamente cuando hay cambios en el c\u00f3digo (hot reload).\u2705 Balancear la carga en m\u00faltiples n\u00facleos con Cluster Mode.\u2705 Registrar logs y estad\u00edsticas de rendimiento en tiempo real.\u2705 Integrarse con Docker y entornos en la nube como AWS, GCP y Azure. \ud83d\udca1 Dato clave: PM2 se ejecuta como un demonio, lo que significa que sigue corriendo en segundo plano sin depender de la terminal. &#8220;En HostArmada queremos ofrecer a nuestros clientes las mejores herramientas para gestionar sus aplicaciones NodeJS. As\u00ed preinstalamos PM2 en todos los planes de hospedaje, permitiendo a nuestros clientes usarlo de inmediato.&#8221; (Aqu\u00ed integro tu experiencia personal sobre PM2 y su implementaci\u00f3n en HostArmada.) 2. Instalaci\u00f3n y configuraci\u00f3n de PM2 \ud83d\udd39 Requisitos previos Antes de instalar PM2, aseg\u00farate de tener Node.js y npm en tu servidor. \ud83d\udccc Para verificar la versi\u00f3n instalada: Si no tienes Node.js instalado, puedes hacerlo con: \ud83d\udd39 Instalar PM2 Para instalar [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":561,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[111,112,109,110],"class_list":["post-559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-funcion-pm2","tag-node-js","tag-pm2","tag-que-es-pm2"],"_links":{"self":[{"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/posts\/559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/comments?post=559"}],"version-history":[{"count":2,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/posts\/559\/revisions"}],"predecessor-version":[{"id":563,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/posts\/559\/revisions\/563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/media\/561"}],"wp:attachment":[{"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/media?parent=559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/categories?post=559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/servimonkey.com\/blog\/wp-json\/wp\/v2\/tags?post=559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}