Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

527
Visualizações
¿Por qué mi NGINX a pm2 es lento cuando se reinicia?

Ejecuto un servidor doméstico con nginx inverso con proxy a un Node.js/PM2 ascendente. Normalmente funciona perfectamente. Sin embargo, cuando quiero hacer cambios, ejecuto pm2 reload pname o pm2 restart pname , lo que da como resultado que nginx arroje 502 Bad Gateway durante unos 10-20 segundos antes de encontrar el nuevo upstream.

Mi aplicación Node.js se inicia muy rápido y estoy 99 % seguro de que el flujo ascendente no tarda tanto en iniciarse y vincularse al puerto (cuando no uso la capa nginx, se puede acceder al instante). ¿Cómo puedo eliminar el tiempo adicional que le toma a nginx resolver las cosas?

Desde nginx/error.log:

 2021/01/29 17:50:35 [error] 18462#0: *85 no live upstreams while connecting to upstream, client: [ip], server: hostname.com, request: "GET /path HTTP/1.1", upstream: "http://localhost/path", host: "www.hostname.com"

Desde mi configuración de dominio nginx:

 server { listen 80; server_name hostname.com www.hostname.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name hostname.com www.hostname.com; # ...removed ssl stuff... gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/atom+xml image/svg+xml; gzip_proxied no-cache no-store private expired auth; gzip_min_length 1000; location / { proxy_pass http://localhost:3010; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $remote_addr; proxy_read_timeout 240s; } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Esto se debe al comportamiento predeterminado de un upstream, esto puede no ser obvio ya que no está declarando explícitamente su upstream usando la directiva upstream . Su configuración con una directiva upstream se vería así:

 upstream backend { server localhost:3010; } ... server { listen 443 ssl; ... location / { proxy_pass http://backend; ... } }

De esta forma, es evidente que solo está confiando en las opciones predeterminadas para la directiva del server . La directiva del server tiene muchas opciones, pero dos de ellas son importantes aquí: max_fails y fail_timeout . Estas opciones controlan los estados de falla y cómo nginx debe manejarlos. De forma predeterminada max_fails=1 y fail_timeout=10 seconds , esto significa que después de un intento fallido de comunicarse con el nginx ascendente, esperará 10 segundos antes de volver a intentarlo.

Para evitar esto en su entorno, simplemente puede deshabilitar este mecanismo configurando max_fails=0 :

 upstream backend { server localhost:3010 max_fails=0; }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda