Como depurar / registrar 502 Bad Gateway do proxy reverso?

1

Estamos executando um serviço da web e acessando 502 Bad Gateway aleatoriamente. O 502 é relatado pelo proxy reverso (Apache 2.4.x) enquanto fala com o servidor de backend (Apache 2.4.x). O problema reaparece aleatoriamente uma vez por 100.000 solicitações atendidas, por isso é muito difícil de reproduzir. Vejo que o Apache permite a configuração de ProxyBadHeader directive onde as opções possíveis são IsError|Ignore|StartBody . Eu tenho problemas para encontrar a causa exata do erro. Eu sei que se eu definir ProxyBadHeader para StartBody , a saída parcial terminaria no navegador. Eu realmente não gostaria de emitir os dados para um usuário final desconhecido, então preciso de algo melhor. É possível registrar todos os dados parcialmente recebidos do gateway incorreto?

O problema parece similar ao Apache bug 37770 mas deve ser corrigido na versão que nós está correndo.

    
por Mikko Rantalainen 27.09.2016 / 14:29

1 resposta

2

Na minha experiência, você está correto em apontar para o erro do Apache 37770 , que no Funcionalidade de proxy reverso do Apache. Se você examinar os patches citados de 2008 a 2016, verá que essas são soluções alternativas. Se a causa raiz desapareceu no httpd-2.4, então isso não é aparente nem da conversa lá ou do comportamento observado do httpd.

Ou

SetEnv proxy-initial-not-pooled 1     # prevent a small percentage of 502 errors, comes with a performance penalty

ou aceite que uma pequena porcentagem de solicitações receba 502 d. Ou migre para o haproxy.

Eu acho que que se você reunisse a conversa do backend, veria que o back-end não vê o HTTP GET. Este foi o resultado da minha pequena investigação e concluí que a conexão fica de alguma forma perdida dentro do código do proxy reverso (talvez onde a conexão de backend é retirada do pool ou retornada lá).

    
por 27.09.2016 / 15:13