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.
Respostas:
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
top
no 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:
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.
fonte
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; }
fonte
Renomeie o upstream para "up_example.com" e altere
estar
fonte
$server_name
. Se esse fosse o problema, acho que ele teria problemas o tempo todo, não apenas às vezes como relatado.