nginx: não há transmissões ao vivo durante a conexão com a montante


15

Erro de gateway 502 incorreto exibido ao alternar entre as páginas do site e algumas vezes na página inicial, mas não para a primeira solicitação na página inicial, somente quando outra página é redirecionada para ele. e isso acontece com alguns arquivos javascript

O balanceamento de carga configurado em dois upstreams php1 php2 ambos são servidores apache.

Quando eu verifiquei o log de erro eu gosto:

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/"

e isso é configuração do servidor de balanceamento 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;
      }

    }

Eu procurei por horas e nada útil encontrou meus fluxos em alta e sem problemas com eles.


Seus servidores upstream (php01, php02) estão funcionando? Você poderia telnet da máquina ngnix para eles?
Neutrinus

Eles estão conectados.
Mohammad Jolani 02/04

Você verificou se os servidores upstream possuem processos suficientes em execução para lidar com o tráfego? Você deve verificar os logs do servidor upstream se eles negarem solicitações por algum motivo.
Tero Kilkanen

Fiz e não tive nenhum problema com nenhum log de erro upstream e nenhum log de acesso para as solicitações de gateway incorretas.
Mohammad Jolani 02/04

Você encontrou uma solução para este problema?
Flickerfly

Respostas:


4

Este não é um problema com o Nginx, é um problema com os back-ends do PHP que não respondem a tempo. Você pode adicionar o log ao Nginx para ajudar a confirmar isso .

Como segundo ponto de referência, você pode topno servidor e verificar manualmente se o PHP está travando a CPU por períodos de tempo, outro indicador de respostas lentas.

Se respostas muito lentas do PHP estiverem bem com você, você pode pedir ao Nginx que espere mais tempo antes de desistir:

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

Examinando os logs com as informações de tempo vinculadas acima, você deve descobrir quais solicitações demoram para o PHP processar.

Para diminuir o problema, envie essas solicitações diretamente para o back-end do PHP.

Dependendo do que está acontecendo, você também poderá habilitar o cache de algumas solicitações no Nginx, evitando algumas solicitações lentas.


0

Não sei se é o mesmo, mas o que funcionou para mim foi adicionar max_fails = 0 ao final do nome do servidor

upstream sm_url {servidor LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }


-3

Renomeie o upstream para "up_example.com" e altere

proxy_pass  http://$server_name/$uri;

estar

proxy_pass  http://up_$server_name$uri;

Embora não seja convencional, não vejo problemas técnicos com o uso de $server_name. Se esse fosse o problema, acho que ele teria problemas o tempo todo, não apenas às vezes como relatado.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.