nginx: no hay transmisiones en vivo mientras se conecta a la transmisión

15

502 error de puerta de enlace incorrecta que se muestra al cambiar entre páginas del sitio y algunas veces en la página de inicio, pero no para la primera solicitud en la página de inicio, es solo cuando otra página lo redirige. y sucede con algunos archivos javascript

equilibrio de carga configurado en dos upstreams php1 php2 ambos son servidor apache.

Cuando verifiqué el registro de errores, me gustaba:

no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

y esta es la configuración del servidor de equilibrio de carga

  upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

Busqué durante horas y nada útil encontró que mis transmisiones están activas y no hubo problemas con ellas.

Mohammad Jolani
fuente
¿Están funcionando sus servidores ascendentes (php01, php02)? ¿Podrías telnet desde la máquina ngnix a ellos?
neutrinus
Están conectados
Mohammad Jolani
¿Ha verificado que los servidores ascendentes tienen suficientes procesos en ejecución para manejar el tráfico? Debe verificar los registros del servidor ascendente si rechazan las solicitudes por algún motivo.
Tero Kilkanen
Lo hice y no tuve ningún problema con ningún registro de error ascendente, y sin registro de acceso para las solicitudes de puerta de enlace incorrecta.
Mohammad Jolani
¿Encontraste una solución a este problema?
flickerfly

Respuestas:

4

Esto no es un problema con Nginx, es un problema con sus backends PHP que no responden a tiempo. Puede agregar el registro a Nginx para ayudar a confirmar esto .

Como segundo punto de referencia, puede hacerlo topen el servidor y verificar manualmente si PHP está bloqueando la CPU por períodos de tiempo, otro indicador de respuestas lentas.

Si las respuestas muy lentas de PHP están bien con usted, puede pedirle a Nginx que espere más antes de darse por vencido:

 # Wait 5 minutes before giving up on the backend!
 proxy_read_timeout 5m; 

Al examinar los registros con la información de sincronización vinculada a lo anterior, debe poder averiguar qué solicitudes son lentas para que PHP las procese.

Para reducir el problema, envíe estas solicitudes directamente al backend de PHP.

Dependiendo de lo que esté sucediendo, también puede habilitar el almacenamiento en caché de algunas solicitudes en Nginx, evitando algunas solicitudes lentas.

Mark Stosberg
fuente
0

No sé si es lo mismo, pero lo que funcionó para mí fue agregar max_fails = 0 al final del nombre del servidor

upstream sm_url {servidor LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }

usuario3520245
fuente
-3

Cambie el nombre del flujo ascendente a "up_example.com" y cambie

proxy_pass  http://$server_name/$uri;

ser

proxy_pass  http://up_$server_name$uri;
Mark R.
fuente
Aunque no es convencional, no veo ningún problema técnico con el uso de $server_name. Si este fuera el problema, creo que tendría problemas / todo / el tiempo, no solo a veces como se informó.
Mark Stosberg